2014-09-08 1 views
0

자바로 실험하고 있었고 "JOptionPane"을 만들려고했습니다. 기본적으로 값을 반환하는 JPanel입니다. (JPanel 소유자가 있음)Java. 가능한 문은 dispose();

JOptionPane처럼 동작하도록 만들고 싶습니다. 값이 반환되면 자체를 파괴해야합니다.

방법이었다 :

public Value getValue(){ 
    try{ 
     dispose(); 
    }finally{ 
     return value; 
    } 
} 

나는 시도를 사용 - 마지막으로는 값을 반환합니다 있는지 확인하기 위해 차단하지만, 좀 더 "실험"코드가 시도없이 작동과 - 마지막으로 차단합니다.

dispose() 이후에 작동하는 명령문 및 메서드는 어떻게 가능합니까?

에도이 코드

public Person getPerson(){ 
    dispose(); 
    System.out.println("aaa"); 
    printFromMethod(); 
    return person; 
} 

유효하며, 패널의 값의 반환 후에 배치 할 것인가?

+0

'dispose()'메소드는 특별하지 않습니다. 당신은 무엇을 기대 했습니까? 어떻게 그 일이 일어 났습니까? –

+0

@GregHewgill은 창을 닫지 않아도됩니까? –

+5

창을 닫은 후에도 코드 실행이 중지되지 않습니다. –

답변

2

java 설명서에 따라 Dispose 메서드는이 Window, 하위 구성 요소 및 모든 소유 된 자식에서 사용하는 모든 네이티브 스크린 리소스를 해제합니다.

이 방법은 화면 리소스 만 정리하고 UI와 관련이없는 코드에는 영향을 미치지 않으므로 개체가 해당 기능을 수행 할 수 있음을 의미하지는 않습니다. 여전히 부모가 그렇게 메소드를 호출하면 당신이 원하는 것을 달성하지의 IT에 붙어 있기 때문에이 경우 JPanel의에서 폐기 메소드를 호출하지 않아야하지만

는 오히려 당신이해야 무엇 JFrame의

에서 Dispose 메서드를 호출입니다
+1

Nit Pick : 꽤 확실한'JPanel'은'dispose' 메서드가 없습니다 - 이것이 당신이 의미하는 것이 었는지는 확실하지 않지만 그것이 읽는 방법입니다;) – MadProgrammer