【发布时间】:2014-02-28 02:56:26
【问题描述】:
试图终止一个 swing gui,启动同一个 gui 并终止它。
我正在使用question 的答案,但它似乎只能工作一次。
下面的代码循环一次并在打印 2 后挂起。
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;
public class Hello {
void createAndShowGUI() {
frame=new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label=new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
void goodbye() {
WindowEvent wev=new WindowEvent(frame,WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev);
}
static void helloGoodbye() throws InterruptedException,InvocationTargetException {
System.out.println("enter");
final Hello hello=new Hello();
System.out.println("1");
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
System.out.println("3");
hello.createAndShowGUI();
System.out.println("4");
}
{
System.out.println("2");
}
});
System.out.println("5");
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
hello.goodbye();
System.out.println("6");
}
});
// Thread.sleep(1000);
System.out.println("exit");
}
public static void main(String[] args) throws InvocationTargetException,InterruptedException {
for(int i=0;i<10;i++)
helloGoodbye();
System.out.println("exiting main");
}
JFrame frame;
}
为什么它不起作用?
【问题讨论】:
-
Chit,您的代码甚至无法编译。但同样重要的是,你的目标是什么。根据您的问题,您听起来好像要重复启动、停止、然后启动和停止 Swing GUI?为什么?您的 UI 体验是什么?
-
它在 Eclipse 中编译得很好。我使用的是 jdk 8。我将添加一个决赛。每次调用都会将 gui 的图片保存在文件中。
-
您的 Hello 变量声明中缺少
final访问修饰符,所以不,它不应该编译。 -
@BobbyDigital:你迟到了大约 10 分钟。我们已经从这个转向更大更好的问题。现在至少我正在试图弄清楚 OP 到底在做什么,他们真正的问题是什么。
-
@BobbyDigital:我踩到了神经。我也很抱歉。
标签: java swing jframe terminate