2010-06-05 5 views
1

JScrollPanel 안에 JLabel 등을 추가 할 수있는 함수를 만들고 싶습니다. NetBeans에서 명령이 무엇인지 확신 할 수 없습니다.자바 스윙 - JScrollPanel에 요소를 추가하는 함수 만들기

아래 코드를 작성하기 위해 JScrollPanel ->events ->container ->componentAdded을 시도했습니다. 그러나 그 기능에 코드를 추가 할 때 아무 것도 나타나지 않습니다.

 private void initComponents() { 

     scrollPanel = new javax.swing.JScrollPane(); 

     scrollPanel.addContainerListener(new java.awt.event.ContainerAdapter() { 
     public void componentAdded(java.awt.event.ContainerEvent evt) { 
      scrollPanelComponentAdded(evt); 
     } 
    } 


    private void scrollPanelComponentAdded(java.awt.event.ContainerEvent evt) { 
     System.out.println("main"); 
    } 

어떤 도움을 주셔서 감사합니다.

답변

3

Netbeans를 사용하지 않고 정확히 무엇을 하려는지 잘 모르겠지만 구성 요소를 스크롤 창에 추가하는 일반적인 경우는 패널을 스크롤 창의 "뷰포트"로 추가하는 것입니다 ". 그런 다음 스크롤 창은 해당 창에있는 창과 같습니다. 패널이 너무 커서 스크롤 창에 맞지 ​​않으면 스크롤 막대가 나타납니다.

다음은 제가 의미하는 바를 보여줍니다. 구성 요소가 실제로 추가하거나 컨테이너에서 제거 될 때

JPanel panel = new JPanel(); 
panel.add(...); // Add whatever components to the panel 
scrollPanel = new JScrollPane(); 
scrollPanel.setViewportView(panel); 

ContainerListener 만 호출됩니다 : 이것은 당신이 당신 initComponents 방법에서 찾고있는 수 있습니다. 위 코드에서 다른 구성 요소는 스크롤 창에 추가되지 않습니다.

+0

대신이 코드를 내 initComponents 코드 대신 함수에 넣기를 원했습니다. – nubme

+1

좋아, 명확히하려고 : "뭔가"가 발생하면 함수의 스크롤 창에 일부 구성 요소를 추가하겠습니까? "무언가"란 무엇입니까? 위의 코드에서 스크롤 창에있는 구성 요소의 변경 사항에 응답하려는 것처럼 보입니다. – Ash