Durch ein JScrollPane.
Hier mal schnell aus einen meiner Projekte:
Ist zum editieren Strings aus einen Objekt.
Zuerst wird ein JPanel angelegt, wichtig ist "setPreferredSize()" und nicht "setSize()" zu verwenden sonst funktioniert es nicht. Keine Ahnung warum, war das erste und einzige mal dass ich eines verwendet habe. Als Größe gibtst du das an, was es tatsächlich haben soll, also inkl. des nicht sichtbaren Bereiches.
Dann werden die Arrays wie bei dem was ich vorhin geschrieben habe angelegt. Dann halt Schleife, die alle Objekte erstellt.
Dann wird die JScrollPane angelegt. Die Parameter sagen, dass immer eine vertikale (nach oben/unten) ScrollBar angezeigt werden soll, auch wenn sie nicht gebraucht wird, und niemals eine horenziontale. Danach sagt man, dass das Panel darin angezeigt werden soll. Danach die Hintergrundsfarbe, warum weiß ich auch nicht mehr, und dann halt Größe und Positionen.
Dann werden die Arrays im OptionsWindow in Klassenvariablen geschrieben, geprüft ob schon eine JScrollBar existiert, tut sie es wird sie entfernt, danach wird die neue hinzugefügt.
Hier mal schnell aus einen meiner Projekte:
Java:
public static void run(List<Cmd> list, OptionsWindow optionsWindow)
{
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setPreferredSize(new Dimension(900, list.size() * 30 + 20));
int listlenght = list.size();
JLabel[] cmdLabels = new JLabel[listlenght];
JLabel[] pathLabels = new JLabel[listlenght];
JLabel[] parmLabels = new JLabel[listlenght];
JTextField[] cmdFields = new JTextField[listlenght];
JTextField[] pathFields = new JTextField[listlenght];
JTextField[] parmFields = new JTextField[listlenght];
EditButton[] editButtons = new EditButton[listlenght];
DelButton[] delButtons = new DelButton[listlenght];
BrowseButton[] browseButtons = new BrowseButton[listlenght];
OKButton[] okButtons = new OKButton[listlenght];
for(int i = 0; i < list.size(); i++)
{
cmdLabels[i] = new JLabel();
cmdLabels[i].setText(list.get(i).getCommand());
cmdLabels[i].setSize(100, 9);
cmdLabels[i].setLocation(20, i * 30 + 20);
panel.add(cmdLabels[i]);
pathLabels[i] = new JLabel();
pathLabels[i].setText(list.get(i).getPath());
pathLabels[i].setSize(300, 9);
pathLabels[i].setLocation(150, i * 30 + 20);
panel.add(pathLabels[i]);
parmLabels[i] = new JLabel();
parmLabels[i].setText(list.get(i).getParm());
parmLabels[i].setSize(100, 9);
parmLabels[i].setLocation(470, i * 30 + 20);
panel.add(parmLabels[i]);
///////
cmdFields[i] = new JTextField();
cmdFields[i].setSize(100, 19);
cmdFields[i].setLocation(20, i * 30 + 20 - 5);
cmdFields[i].setVisible(false);
panel.add(cmdFields[i]);
pathFields[i] = new JTextField();
pathFields[i].setSize(300, 19);
pathFields[i].setLocation(150, i * 30 + 20 - 5);
pathFields[i].setVisible(false);
panel.add(pathFields[i]);
parmFields[i] = new JTextField();
parmFields[i].setSize(100, 19);
parmFields[i].setLocation(470, i * 30 + 20 - 5);
parmFields[i].setVisible(false);
panel.add(parmFields[i]);
///////
editButtons[i] = new EditButton(i, optionsWindow);
editButtons[i].setSize(100, 15);
editButtons[i].setLocation(600, i * 30 + 20 - 3);
panel.add(editButtons[i]);
delButtons[i] = new DelButton(i, optionsWindow);
delButtons[i].setSize(100, 15);
delButtons[i].setLocation(730, i * 30 + 20 - 3);
panel.add(delButtons[i]);
///////
browseButtons[i] = new BrowseButton(i, optionsWindow);
browseButtons[i].setText("Browse");
browseButtons[i].setSize(100, 15);
browseButtons[i].setLocation(600, i * 30 + 20 - 3);
browseButtons[i].setVisible(false);
panel.add(browseButtons[i]);
okButtons[i] = new OKButton(i, optionsWindow);
okButtons[i].setText("OK");
okButtons[i].setSize(100, 15);
okButtons[i].setLocation(730, i * 30 + 20 - 3);
okButtons[i].setVisible(false);
panel.add(okButtons[i]);
}
JScrollPane scrollPane = new JScrollPane(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setViewportView(panel);
scrollPane.setBackground(Color.blue);
scrollPane.setLocation(20, 20);
scrollPane.setSize(900, 8 * 30 + 50);
optionsWindow.setCmdLabels(cmdLabels);
optionsWindow.setPathLabels(pathLabels);
optionsWindow.setParmLabels(parmLabels);
optionsWindow.setCmdFields(cmdFields);
optionsWindow.setPathFields(pathFields);
optionsWindow.setParmFields(parmFields);
optionsWindow.setEditButtons(editButtons);
optionsWindow.setDelButtons(delButtons);
optionsWindow.setBrowseButtons(browseButtons);
optionsWindow.setOkButtons(okButtons);
JScrollPane oldPane = optionsWindow.getScrollPane();
if(oldPane != null)
optionsWindow.remove(oldPane);
optionsWindow.add(scrollPane);
optionsWindow.setScrollPane(scrollPane);
}
Ist zum editieren Strings aus einen Objekt.
Zuerst wird ein JPanel angelegt, wichtig ist "setPreferredSize()" und nicht "setSize()" zu verwenden sonst funktioniert es nicht. Keine Ahnung warum, war das erste und einzige mal dass ich eines verwendet habe. Als Größe gibtst du das an, was es tatsächlich haben soll, also inkl. des nicht sichtbaren Bereiches.
Dann werden die Arrays wie bei dem was ich vorhin geschrieben habe angelegt. Dann halt Schleife, die alle Objekte erstellt.
Dann wird die JScrollPane angelegt. Die Parameter sagen, dass immer eine vertikale (nach oben/unten) ScrollBar angezeigt werden soll, auch wenn sie nicht gebraucht wird, und niemals eine horenziontale. Danach sagt man, dass das Panel darin angezeigt werden soll. Danach die Hintergrundsfarbe, warum weiß ich auch nicht mehr, und dann halt Größe und Positionen.
Dann werden die Arrays im OptionsWindow in Klassenvariablen geschrieben, geprüft ob schon eine JScrollBar existiert, tut sie es wird sie entfernt, danach wird die neue hinzugefügt.