저는 수석 디자인 프로젝트를 위해 Netbeans 6.1에서 GUI를 만드는 중이지만 성가신 걸림돌을 겪었습니다. 내 로그인 PopUp과 같은 다른 임시 윈도우는 내가 말할 때 사라집니다. 나는 약 2 개월 동안 이것을 해결하는 방법을 연구 해왔다. 나도 내 팝업에 대한 별도의 스레드를 화나게했지만 여전히 작동하지 않을 것이다 .... 내가 말 그대로 다른 GUI 구성 요소 중 하나를 엉망으로하지 않으면 사라질 유일한 방법 .... 내 샘플 코드는 내 설명을 도와야한다 내 분노 ... 그림자 코드에 신경 쓰지 마라. 테스트 목적이었다. 분명히 도움이되지 않았다.왜 내 JFrame은 숨기지 않습니까?
//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");
}
}
스윙 유틸리티를 사용해 보았지만 어쩌면 처음 사용했을 때 잘못 구현했습니다. 그것은 본질적으로 위의 코드 나던 할 코드가 기다려야 얻을 때 창이 정지 제외하고는 상기와 같은 일, 수행합니다
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)
{
}
}
});
이 좀 도와주세요!
나는 너희들이 맞을 것 같아 ... 내가 원하는 모든 것은 나타나는 창이있다. 사용자가 목록에서 그의 이름을 선택하고, 암호를 입력하고, 암호가 확인 되 자마자 나는 창을 그냥 사라지기를 원했다. 내 행운을 시험하기 위해 지금 프레임을 대화 상자로 바꾸는 것 – durrellp
문서 스레드로부터 안전하지 않다면 그렇지 않다. 사실 JDK7은 메서드가 thread-safe 인 일부 문서를 제거합니다. –