2011-08-19 3 views
2

많은 구성 요소가있는 큰 응용 프로그램에서 작업하고 있습니다. comboBox을 한 곳에서 추가하려고하는데 Container가 해당 구성 요소를 표시하기 전에 제거하는 중입니다. Java Swing이 유효성을 검사하고 제거한 부분을 읽었습니다. 그게 정확히 어떻게 작동합니까?컨테이너가 표시되기 전에 구성 요소를 제거합니다.

죄송하지만이 문제는 너무 갑작스럽고 어떤 코드도 제공 할 수 없습니다.

P. 구성 요소, 패널 및 컨테이너의 모든 속성을 확인하고 구성 요소의 가시성에 영향을주는 것은 없습니다.

답변

3

나는 here 그것에 대해 마지막으로/최근 게시물에서 가이드가, BTW How to Add/Remove JComponent(s) on Runtime에 대한 스레드를 많이가 어떻게 당신이, 당신에게 JComboBox가 예상되는 눈에 보이는 컨테이너에 추가 된 것이 확실 것을 디버깅 않았다 Container is removing that component before it is visible 것을 볼 수 없습니다 ,

+0

예 JComboBox가 보이는 컨테이너를 수정하기 위해 추가되었다고 확신합니다. 거기에 몇 가지 스레드가 작동하지만. 당신의 링크는 매우 도움이되었다. – arpanoid

+0

어디서, 어떻게 그리고 무엇이 getBounds가 반환하는지, 그리고 보이는 Rectangle에 디버그하고 있는지 ..... – mKorbel

+2

@arpanoid : 콤보 상자에 액세스하는 스레드가 여러 개 있으면 안됩니다. EVENT Dispatch Thread 만 액세스해야합니다. http://download.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading을 참조하십시오. –

3

당신이 읽은 것은 하나의 시각화 된 컨테이너에만 구성 요소를 추가 할 수 있다는 것입니다. 구성 요소를 여러 컨테이너에 추가하면 해당 구성 요소 중 하나에서만 시각화됩니다. 그것 이외에, Swing은 컨테이너에서 구성 요소를 무작위로 제거하지 않습니다. 그래서 내가 언급 한 첫 번째 문제는 문제가 아니며 프로그램에 버그가있어 그것이 무엇인지 파악하는 코드가 필요할 것입니다 . 당신이 만들고 게시 할 수 있다면 가장 좋을 것입니다. SSCCE

관련 문제