2010-06-19 3 views
1

Dynamicaly Components를 JPanel에 추가해야하지만, (Component)를 추가하면 구성 요소가 나타나지 않습니다. 그러면 JPanel.revalidate(); 그렇다면 JPanel이 깜박이며 깜박 거리지 않고 더 잘 만들 수 있습니까?Swing 새로 추가 Component

흠, 솔루션을 찾았습니다. 추가 (구성 요소) 직후입니다. 내가 쓰기 component.repaint(); 그리고 그것은 작동하지만 지금은 창 크기 조정에 대한 또 다른 문제가 있습니다. 창 크기를 조정하면 모든 추가 된 구성 요소가 무시됩니다 !!!

+0

는 당신이 구성 요소 크기를 조정 예를 당 한 번만 추가) SwingUtilities.invokeLater()를 참조 EDT에서 추가되어 있는지 확인해야 작거나 큰 크기? – Gordon

+1

문제를 보여주는 간단한 예제 게시를 고려하십시오. http://sscce.org/ – trashgod

+0

어떤 LayoutManager를 사용합니까? 일부 LayoutManager는 나중에 구성 요소를 추가 할 수 없습니다. 다른 사람들은 깜박임을 설명 할 수있는 많은 처리를 수행합니다. – jfpoilpret

답변

3

이 기본이지만, 각 구성 요소가

1) (

2)

0

초기화 할 때 구성 요소를 추가하고 숨기면 필요할 때 표시 할 수 있습니다.

Component.setVisible(boolean b) 메서드를 사용하면 구성 요소를 표시하거나 숨길 수 있습니다.

편집 :

난 그냥 내가 주 JFrame의 랜덤 요소를 추가하는 간단한 테스트 클래스를 시도하고 괜찮 았는데.

JPanel.revalidate() 다음에 JFrame.pack()으로 전화 해보세요.

이렇게해도 차이가 나지 않는다면 동적 구성 요소를 추가 할 위치에 코드를 게시 할 수 있습니까?

또 다른 편집 :

이 주요 구성 요소가 ComponentListener 인터페이스를 구현 확인하고 JFrame.pack를 호출 componentResized(ComponentEvent e) 메소드를 구현().

+1

아니요, 초기화하는 순간에 어떤 구성 요소가 추가 될지 모르기 때문에 :( –

0

새 구성 요소를 추가하는 경우 revalidate을 호출해야합니다.

예 :

panel.add(new JButton(...), ...); 
panel.revalidate(); 

당신이 EDT 내에서이 전화하고 있는지 확인합니다.

여전히 깜박이면 panel.setDoubleBuffered입니다.

호프가 도움이 되길 원하지만, 예제 코드가 실제로 설명하는 효과를보기에 좋을지라도.

관련 문제