2009-08-04 4 views
4

컨테이너는 BorderLayout을 사용합니다. 나는 센터에 추가 한 JPanel을 가지고있다. 그러나 JPanel에는 변수 이름이 없습니다.BorderLayout을 사용하는 JFrame에서 컴포넌트를 제거하는 방법

나는 contents.remove (nameofPanel)

을하지만, 수 나는이 contents.add (새 CustomJPanel(), BorderLayout.CENTER)처럼 추가하기 때문에;

이제 현재 CustomJPanel을 제거하고 새 것을 추가하려고합니다.

어떻게하면됩니까?

답변

5

가장 좋은 방법은 생성자 호출을 명명 된 변수 (실제로는 아마도 필드)로 추출한 다음 이전 사례로 축소하는 것입니다. 칼의 대답은 아마 최고의 하나, 덜 적절한 대안이지만

contents.add(new CustomJPanel(), BorderLayout.CENTER); 

nameOfPanel = new CustomJPanel(); 
contents.add(nameOfPanel, BorderLayout.CENTER); 
6

된다 어떤 이유로 원본 추가() 호출 변경할 수없는 경우 :

contents.remove(((BorderLayout)getLayout()).getLayoutComponent(BorderLayout.CENTER)); 
contents.add(someNewPanel); 

당신이 이것을 할 필요가 있다고 생각 되더라도, 뒤로 ​​물러나서 그것을하려는 이유를 평가할 수 있습니다.

0

전역 CustomJPanel 변수를 선언하고 첫 번째 패널에서 인스턴스를 생성 한 다음 패널을 추가하는 것이 좋습니다. 그것을 제거하려면 동일한 객체를 사용하십시오. 그런 다음 새 객체를 변수에 할당하고 같은 방식으로 추가합니다.

익명 개체는 참조 할 필요가 없을 때 괜찮습니다. 그러나 당신은. 따라서 익명으로 사용하지 않는 것이 좋습니다.

관련 문제