2017-11-06 3 views
1

Wenn ich eine neue Komponente hinzufüge, wird der Bildlauf nicht aktualisiert. Kann ich es aktualisieren, ohne ein neues JScrollPane zu erstellen?(JAVA) Wie scrolle ich, wenn ich ein neues Bauteil hinzufüge?

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); 
    } 

Buttons die neue Komponente in Box hinzufügen:

enter image description here

+1

Wo ist der Teil, wo Sie Komponenten hinzufügen? – Berger

+0

@Berger Weit entfernt von dieser Klasse, die JScrollPane nicht enthält –

+1

Versuchen Sie 'revalidate()' auf dem Panel aufzurufen, das die hinzugefügten Komponenten enthält. – Berger

Antwort

0

The Box/JPanel Muss feste Größe. Oder es muss MaximumSize haben.

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); 
} 
Verwandte Themen