Ich versuche, eine einfache Swing UI zu erstellen, die eine Liste von Textbereichen alle untereinander anzeigt. Ich möchte eine Bildlaufleiste haben, mit der ich vertikal durch die Liste blättern kann.Java Swing - Elemente in scrollbaren GridLayout nicht sichtbar
Allerdings kann ich nicht die Einträge im Raster sichtbar machen und so bleiben.
Es scheint, als ob die Einträge für einen Bruchteil einer Sekunde erscheinen und dann wieder verschwinden. Ich kann es überhaupt nicht verstehen.
Hier ist mein Code:
public class MyWindow extends JFrame {
JPanel stretchPanel;
JScrollPane scrollpane;
JPanel centrePanel;
JScrollBar scrollbar;
public MyWindow(String title) {
super(title);
BorderLayout layout = new BorderLayout();
setLayout(layout);
stretchPanel = new JPanel();
scrollpane = new JScrollPane();
stretchPanel.setLayout(new FlowLayout());
centrePanel = new JPanel();
centrePanel.setLayout(new GridLayout(0, 1));
scrollbar = new JScrollBar(JScrollBar.VERTICAL);
scrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollpane.setVerticalScrollBar(scrollbar);
scrollpane.setViewportView(stretchPanel);
stretchPanel.add(centrePanel);
scrollpane.add(stretchPanel);
add(scrollpane, BorderLayout.CENTER);
fillGrid();
setVisible(true);
}
public void fillGrid() {
centrePanel.removeAll();
for (int i = 0; i < 20; i++) {
TextField entry = new TextField("Hello");
centrePanel.add(entry);
}
scrollpane.setPreferredSize(new Dimension(800, 700));
pack();
}
public static void main(String[] args) {
new MyWindow("d");
}
}
Jede Hilfe wird sehr geschätzt!
Danke, es scheint, ich habe sowohl hinzufügen und setviewportview aufgerufen. Durch das Entfernen des Add-Calls wurde mein Problem behoben. Die Bildlaufleiste, die ich nur erstellt habe, um die Bildlaufleiste zu sehen, mit der ich vorher zu kämpfen hatte. –