【问题标题】:basic java Main method and update基本的java Main方法和更新
【发布时间】:2017-02-02 12:21:14
【问题描述】:

在使用基于 java 的处理 (processing.org) 编码后,我对纯 java 很陌生。在处理中,您在主类中有一个 setup 方法(构造函数)和一个 draw 方法。

draw 方法一遍又一遍地循环,直到你关闭程序。在绘图中,我从其他类运行我的方法。

我如何在 Java 中做到这一点?例如,在下面的这段代码中让计数器计数?

public class Testing3 {

    public static void main(String[] args) {
        MyClass c = new MyClass();
        System.out.println("c = " + c.getCount());
    }
}

还有班级:

public class MyClass {

    private int value;

    public MyClass() {

    }

    public void setCount(int startV) {
        value = startV;
    }

    public int getCount() {
        value++;
        int counter = value % 10;
        return counter;
    }
}

我知道我当然可以将 printmessage 放在一个 while 循环中并以这种方式循环,但我想还有其他方法吗?

我还通过 netbeans 中的 GUI 构建器使用了一些 swing。在那里我无法在主方法中访问我的对象,获取 “无法从静态内容引用非静态变量”。仅通过以下功能。但是,如果我想在不按我在构建器等中创建的按钮的情况下获得我的计数器怎么办?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)  {}

我知道这是一个新问题,但我有点困惑。

【问题讨论】:

  • 在核心 java 中,您实际上必须使用循环来执行此操作。但是 JavaFX 中有 Timer 类,它们在设定的时间间隔内触发事件。然后,您的事件处理程序可以在每次触发这些事件时运行代码。
  • 要在 Swing 中以设定的时间间隔(一次或重复)发生某些事情,请使用 javax.swing.Timergetting the "non static variable 我建议发布minimal reproducible example

标签: java swing main


【解决方案1】:

我没有完全理解你的问题(假设只有一个问题),但我认为这就是你要找的

      import java.awt.FlowLayout;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JLabel;

      class Listener implements ActionListener{
          int n;
          JLabel label;
          public Listener(int n,JLabel label){
              this.n=n;
              this.label=label;
          }
          @Override
          public void actionPerformed(ActionEvent arg0) {
              n++;
              label.setText(""+n);      
          }
      }

      public class SwingTest {
          public static void main(String[] args) {
              int n=0;
              JFrame frame= new JFrame("My First JAVA SWING App");
              frame.setLayout(new FlowLayout());
              JLabel label=new JLabel("value here");
              JButton button=new JButton("click!!!");
              button.addActionListener(new Listener(n,label));
              frame.add(button);
              frame.add(label);
              frame.setSize(200, 100);
              frame.setVisible(true);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
      }

这应该在一个名为 SwingTest.java 的文件中

【讨论】:

  • 谢谢。我使用按钮运行和更新没有问题。 :-) 我有点困惑如何更新 GUI,例如,如果我有一个计数器,如果我没有用按钮创建滴答声,它将显示滴答声。但我想 javax.swing.Timer 会有所帮助。需要去那里看看。
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 2018-03-29
  • 2012-11-04
  • 2014-03-26
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多