gpt4 book ai didi

java - JButton 和 JLabel 不显示在 JDialog 上并且 sleep 不起作用

转载 作者:行者123 更新时间:2023-12-01 18:53:29 25 4
gpt4 key购买 nike

我有一个框架,当我单击 tester2 框架上的“确定”按钮时,应该看到 tester1 框架,当单击 showbumber 按钮时,应该在我的标签中显示一个随机数。

但是当我使用 sleep 方法时我看不到这个生成的数字!

感谢您的帮助。

public class tester2 extends JFrame implements ActionListener {

public tester2() {
setTitle("Hello");
setLayout(new FlowLayout());
JButton okButton = new JButton("Ok");
okButton.addActionListener(this);
add(okButton);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(40, 50, 300, 400);

}

@Override
public void actionPerformed(ActionEvent e) {
tester1 tester1 = new tester1(tester2.this);
tester1.setVisible(true);
}

public static void main(String[] args) {
new tester2().setVisible(true);
}
}

测试人员 1:

public class tester1 extends JDialog implements ActionListener {

JLabel lbl1;
JButton showButton;

public tester1(JFrame owner) {
super(owner, "tester1", true);
showButton = new JButton("Show Number");
showButton.addActionListener(this);
lbl1 = new JLabel(" ");

this.add(showButton);
this.add(lbl1);
this.setBounds(40, 50, 300, 400);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == showButton) {
GenerateNumber();
tester1.this.dispose();
}
}

public void GenerateNumber() {
Random rnd1 = new Random();
try {
Thread.sleep(1000);
lbl1.setText(String.valueOf(rnd1.nextInt(100)));
} catch (InterruptedException inrptdEx) {
}
}
}

最佳答案

如果您的目的是在短暂延迟后自动关闭第二帧,则应使用 javax.swing.Timer

阻止 EDT 将阻止它(除其他外)处理重绘请求,这意味着当您可以 Thread.sleep 时,您的 UI 无法更新

相反,您应该使用javax.swing.Timer

public void GenerateNumber() {
Random rnd1 = new Random();
try {
lbl1.setText(String.valueOf(rnd1.nextInt(100)));
} catch (InterruptedException inrptdEx) {
}
Timer timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
dispose();
}
});
timer.setRepeats(false);
timer.start();
}

关于java - JButton 和 JLabel 不显示在 JDialog 上并且 sleep 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com