首页 > 解决方案 > 等待 ActionListener actionPerformed(使用 Timer?)

问题描述

我正在尝试从 JFrame 填充一个变量,并且在尝试让程序等待执行的操作在继续之前发生时遇到了很大的困难。请参阅下面的代码。

JFrame实现类:

public class Frame extends JFrame implements ActionListener {

static Scanner sc = new Scanner(System.in);
static String s;
static JTextField textfield;
static JButton jButton;

public void showFrame() {
    JFrame jf = new JFrame();
    textfield = new JTextField("", 10);
    jButton = new JButton("Enter");
    jButton.addActionListener(new Frame());
    JPanel panel = new JPanel();
    JLabel jl = new JLabel("Options");
    jf.setSize(200, 200);
    jf.setVisible(true);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.add(panel);
    panel.add(jl);
    panel.add(textfield);
    panel.add(jButton);
}

@Override
public void actionPerformed(ActionEvent arg0) {
    s = textfield.getText();
}

public String reportVal(){
    return s;
}

}

主要 Java 文件:

    Frame frame = new Frame();
    frame.showFrame();

    Timer t = new Timer(1000, frame);
    t.start();
    int trials = Integer.parseInt(frame.reportVal()); 

我想用 JFrame 中的值填充试验,但现在线程不等待,所以在我可以单击框架上的输入之前它一直执行。我对 swing/awt 组件了解不多(显然),所以我很感激你能提供的任何帮助。

标签: javamultithreadingswingtimerawt

解决方案


推荐阅读