好的,所以我是一个初学程序员,试图进行一个测验,这个代码用于弹出一个勾号,当他们得到正确的东西我现在制作我的计划是使用Thread.sleep(2000)来制作2秒延迟,然后使用.setVisible(false)或.dispose但当我尝试使用其中任何一个来关闭它时,消息说(不能从类型Window对静态方法setVisible(boolean)进行静态引用)。所以任何人都可以向我推荐任何替代方法来做到这一点,我可以通过做这项工作或使用其他方法让事情在2秒后关闭。
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Correct extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Correct frame = new Correct();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
* @throws InterruptedException
*/
public Correct() throws InterruptedException {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(650, 250, 600, 500);
contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("");
label.setIcon(new ImageIcon("D:\\Eclipse\\Coursework2017\\src\\check-146095_960_720.png"));
label.setBackground(Color.WHITE);
label.setBounds(104, 0, 384, 463);
contentPane.add(label);
Thread.sleep(2000);//To make the pop up close after 2 seconds
Correct.(false);
}
}
答案 0 :(得分:0)
最好把做的代码放在构造函数之外的对象上。构造函数仅用于初始化对象。
public class Correct extends JFrame {
/**
* Create the frame.
* @throws InterruptedException
*/
public Correct() {
setSize(500, 500);
// ...
}
static void showAndClose() throws InterruptedException {
Correct frame = new Correct();
frame.setVisible(true);
Thread.sleep(2000);
frame.dispose();
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
showAndClose();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
[你的代码没有编译,你的问题有点不清楚]