2017-11-06 15 views
1

새 구성 요소를 추가하면 스크롤 패널이 업데이트되지 않습니다. 새 JScrollPane을 만들지 않고 업데이트 할 수 있습니까?(JAVA) 새로운 구성 요소를 추가 할 때 스크롤을 만드는 방법은 무엇입니까?

public void start(){ 
     getBox_Topics().setBorder(new TitledBorder(new EtchedBorder(),"Topics of vote")); 
     add(new JScrollPane(getBox_Topics(), 
       JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
       JScrollPane.HORIZONTAL_SCROLLBAR_NEVER)); 
     pack(); 
     setHandler(new ClientHandler_Thread(this)); 
     getHandler().start(); 
     setVisible(true); 
    } 

버튼 상자에 새 요소를 추가 :

enter image description here

+1

구성 요소를 추가하는 부분은 어디입니까? – Berger

+0

@Berger JScrollPane이 포함되지 않은이 클래스의 원근감 –

+1

추가 된 구성 요소가 포함 된 패널에서'revalidate()'를 호출 해보십시오. – Berger

답변

0

박스 내/인 JPanel의 필수는 고정 된 크기입니다. 또는 MaximumSize가 있어야합니다.

public void start(){ 
    getBox_Topics().setBorder(new TitledBorder(new EtchedBorder(),"Topics of vote")); 
    setScrollPane(new JScrollPane(getBox_Topics())); 
    add(getScrollPane()); 
    getScrollPane().setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
    getBox_Topics().addContainerListener(new ContainerListener() { 
     @Override 
     public void componentAdded(ContainerEvent containerEvent) { 
      getScrollPane().revalidate(); 
      getScrollPane().repaint(); 
     } 

     @Override 
     public void componentRemoved(ContainerEvent containerEvent) { 

     } 
    }); 
    pack(); 
    setHandler(new ClientHandler_Thread(this)); 
    getHandler().start(); 
    setVisible(true); 
}