Java 单击JOptionPane时重新运行swing JFrame
我有一个swing JFrame,在代码的某个地方,我需要显示一个JOptionPane供用户选择: 如果是-我需要再次运行ht JFrame并退出现有框架 如果没有-这个问题解决了,我只需要退出 以下是JFrame代码:Java 单击JOptionPane时重新运行swing JFrame,java,swing,jframe,joptionpane,Java,Swing,Jframe,Joptionpane,我有一个swing JFrame,在代码的某个地方,我需要显示一个JOptionPane供用户选择: 如果是-我需要再次运行ht JFrame并退出现有框架 如果没有-这个问题解决了,我只需要退出 以下是JFrame代码: public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
下面是我创建的JOptionPane代码:
int ok = JOptionPane.showConfirmDialog(null, "would you like to enable USB in your device?", "USB", JOptionPane.YES_NO_OPTION);
if (ok==JOptionPane.YES_OPTION){
Thread t = new Thread(){
public void run(){
String[] args = { };
MainFrame f = new MainFrame();
f.main(args);
}
}.start();
}
else if(ok==JOptionPane.NO_OPTION){
System.exit(ok);
}
我创建了线程,它正在打开另一个JFrame,但没有关闭现有的JFrame
感谢您的帮助:)如果框架可见,则frame.dispose()frame=null;之后,frame=new。。。。但是这意味着,框架需要在一个更大的范围内,不要在对象上调用静态方法,而是尝试养成在类本身
MainFrame.main(args)
上调用这些方法的习惯,或者使用非静态方法public void main(String[]args)
1)在单个JFrame
中使用a,如中所示。2) 为了更快地获得更好的帮助,可以发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。3) t.start()代码>应该被安排在事件调度线程上发生。@MrTsjolder我将调用更改为“MainFrame.main(args)”,因为它是静态的,但这并不能解决问题,谢谢你:)我通过中断当前线程Thread.currentThread().interrupt()解决了问题
结束JOptionPane消息并再次返回大型机。。谢谢你的帮助。。