我想创建一个小型Swing应用。它有2 JFrame
秒。首先JFrame
有一个按钮,当我点击此按钮时,第二个JFrame
将会显示。第二个JFrame
显示在2秒内然后处理。我想这个动作会运行很多次!我写了这段代码,但它不起作用:
private void btnStudyActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
for( int i = 0 ; i< 10 ; i++){
Show s = new Show();
s.setVisible(true);
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
}
s.dispose();
}
}
请给我一个解决方案。
答案 0 :(得分:0)
我怀疑这不起作用,因为您在事件调度线程中排除了所有这些操作。所以,如果我是你,我将尝试将代码放在一个单独的线程中(开始时你可以使用Thread
类,但后来我建议使用SwingWorkers
)并查看效果是否为一个你想要的。
private void btnStudyActionPerformed(java.awt.event.ActionEvent evt) {
new Thread(new Runnable() {
@Override
public void run() {
Show s = new Show();
s.setVisible(true);
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
}
s.dispose();
}
}).start();
}
我不知道循环是什么。无论如何,我建议你从Sun / Oracle教程中阅读this chapter。
希望它有所帮助!
答案 1 :(得分:0)
你想要得到一种像
那样的眨眼沟通private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFrame s = new JFrame();
s.setSize(300, 200);
s.add(new JLabel("Warning"));
setVisible(true);
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
s.setVisible(false);
Thread.sleep(100);
s.setVisible(true);
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(ManyPopups.class.getName()).log(Level.SEVERE, null, ex);
}
}
s.dispose();
}
}).start();
}