2010-11-19 5 views
0

그래서 내부에 JScrollPane이 있고 JScrollPane 안에 JPanel이있는 JFrame이 있습니다. JScrollPane 내부의 JPanel을 수정하는 버튼 클릭 마우스 수신기가 있습니다. 마우스 청취자의 코드는 다음과 같습니다JFrame의 크기를 변경 한 후에 만보기를 업데이트

@Override 
    public void mouseClicked(MouseEvent arg0) { 

      searchResult.updateInfo(); 

     } 

updateInfo이의 SearchResult 인 JPanel에 JPanel을 잔뜩 추가하는 방법. 이 리스너와 관련된 버튼을 클릭 한 후에는 아무 일도 일어나지 않지만 JFrame의 크기를 조정하면 뷰가 업데이트됩니다. 왜 이럴까요?

은 내가 JFrame의를 다시 칠했는데, 그것은 당신이 필요로 보이는 GUI에서 구성 요소를 추가/제거 한 후이 searchResult.removeAll(); searchResult.updateInfo(); searchResult.validate(); searchResult.repaint();

답변

2

같이하게 작동하지 않는 경우가

+0

LayoutManager는 컴포넌트 배치 방법에 대한 첫 번째 렌더링시에만 요구되기 때문입니다. 컴퍼넌트에게, LayoutManager에게, 여기에 설명한대로 revalidate()를 호출하는 것에 다시 요구하도록 (듯이) 지시 ​​할 필요가 있습니다. – ZeissS

+0

감사합니다! 이게 내 문제를 해결했다. – aherlambang

0

searchResult.removeAll(); searchResult.updateInfo(); searchResult.validate(); 을 내 문제가 해결되지 않았다 원하는 크기를 다시 계산할 수 있도록 구성 요소의 레이아웃을 패널에 알려줍니다. 당신은 추가해야합니다

searchResult.revalidate(); 
searchResult.repaint(); // sometimes needed 

그런 다음 적절한 사이즈가 나타납니다 스크롤 스크롤바의 크기보다 큰 경우.

+0

죄송합니다. 위 코드를 업데이트하면됩니다. mouseClicked는 searchResult에서 updateInfo를 호출하기 만하면됩니다. 위에서 설명한대로이 메서드는 패널에 무리한 검색 결과를 추가합니다. JPanel – aherlambang

+0

아무런 문제가 없습니다. , 중요한 것은 u 개 문제를 해결했다, 행운을 빕니다. – palAlaa

관련 문제