I am having problems changing JScrollPane components. I have an ArrayList named textFields from which I want to take elements and add to my scrollPane.
Can someone please help me? I cannot seem to remove the scrollPane’s elements or seem to add the other textfields from the ArrayList. Here is my method ::
private void resetJSPComponents() { scrollPane.removeAll(); for(int a = 0; a < 5; a++) { JTextField jTF = textFields.get(a); scrollPane.add(jTF); } scrollPane.revalidate(); scrollPane.repaint(); }
Advertisement
Answer
I know you have a better solution, but for the future when using a JScrollPane here is the answer to your original question.
Problems removing and replacing components from JScrollPane
scrollPane.removeAll(); for(int a = 0; a < 5; a++) { JTextField jTF = textFields.get(a); scrollPane.add(jTF); }
Never remove/add components to the scrollpane. The scroll pane is a complicated component and contains many child components:
- horizontal/vertical scrollbars
- column/row headers
- a viewport
To change what is displayed in the scroll pane, you reset the component in the viewport.
So in your example you would:
- create a JPanel for all the child components
- add the text fields to this panel
Then you use:
scrollPane.setViewportView( panel );
Thats all. No need to use the removeAll() method or to revalidate() and repaint() the scroll pane.