Я нахожусь в процессе создания графического интерфейса в Netbeans 6.1 для моего старшего дизайн-проекта, но я столкнулся с досадной загадкой. Временные окна, такие как мой логин PopUp и другие, не исчезнут, когда я скажу это. Я изучал, как решить эту проблему в течение приблизительно 2 месяцев. Я даже разозлил отдельный поток для моего всплывающего окна, но он все равно не будет работать ... единственный способ, которым он исчезнет, если я буквально не буду связываться с любым из других компонентов графического интерфейса .... мой пример кода должен помочь описать гнев ... не обращайте внимания на теневой код, это было для целей тестирования, что, очевидно, не помогло.
//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)
{
}
}
});
ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ !!!