我正在为我的高级设计项目在 Netbeans 6.1 中创建一个 GUI,但我遇到了一个烦人的障碍。当我告诉它时,像我的登录弹出窗口和其他临时窗口不会消失。我一直在研究如何解决这个问题大约 2 个月。我什至为我的弹出窗口创建了一个单独的线程,但它仍然无法工作......如果我真的不与任何其他 GUI 组件混淆,它会消失的唯一方法......我的示例代码应该有助于描述我的愤怒...不要介意影子代码,这是出于测试目的,这显然没有帮助。
//This method is called once a user presses the "first" login button on the main GUI
public synchronized void loginPopUpThread() {
doHelloWorld = new Thread(){
@Override
public synchronized void run()
{
try
{
loginPopUpFrame.pack();
loginPopUpFrame.setVisible(true);
System.out.println("waitin");
doHelloWorld.wait();
System.out.println("Not Sleepin..");
loginPopUpFrame.pack();
loginPopUpFrame.setVisible(false);
}
catch (InterruptedException e)
{
}
}
};
doHelloWorld.start();
//This is called when the "second" loginB is pressed and the password is correct...
public synchronized void notifyPopUp() {
synchronized(doHelloWorld) {
doHelloWorld.notifyAll();
System.out.println("Notified");
}
}
我也尝试过 Swing Utilities,但也许我实施错了,因为这是我第一次使用它们。它基本上与上面的代码做同样的事情,除了窗口在等待时冻结,上面的代码没有做:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public synchronized void run() {
try
{
loginPopUpFrame.pack();
loginPopUpFrame.setVisible(true);
System.out.println("waitin");
wait();
System.out.println("Not Sleepin.");
loginPopUpFrame.pack();
loginPopUpFrame.setVisible(false);
}
catch (InterruptedException e)
{
}
}
});
请帮我!!!