habe da ein kleines Problem, dass bestimmt viele von Euch beantworten können:
Ich benutze Eclipse und den VisualEditor. Jetzt habe ich eine JList in meiner GUI mit folgendem Code:
Code:
private JList getJListFields() {
if (jListFiles == null) {
jListFiles = new JList();
jListFiles.setBounds(new Rectangle(14, 74, 227, 302));
model = new DefaultListModel();
...
model.add(...);
...
jListFiles.setModel(model);
}
...
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelKommentar = new JLabel();
...
jContentPane.add(getJListFields(), null);
} return jContentPane;
Jetzt verwende ich keinen LayoutManager sonder habe meine Elemente frei Hand angeordnet.
Wie bekomme ich denn jetzt an die Liste eine JScrollPane? Und wie funktioniert das mit dem VisualEditor?
So funktionierts nicht:
Code:
JScrollPane scroller = new JScrollPane(jListFiles);
Hat vielleicht jemand eine Idee?
Vielen Dank
Marcus
VisualEditor => kA, ich schreibe meine GUI von Hand
absolute Positionen ohne Layoutmanager => ganz schlechte Idee. Kommt von OS zu OS (sogar Windowsintern) zu argen Verschiebungen
JScrollPane um deine JList =>
Code:
JScrollPane scroller = new JScrollPane(getJListFiles());
jContentPane.add(scroller, null);
Ja natürlich. Habe eigentlich gedacht das ist klar, wenn ich schreibe dass du dann das JScrollPane dem Container adden sollst. Die JList darfst du übrigens NICHT nochmal dem Container adden.
gut: jetzt habe ich die Jlist aus dem COntainer auskommentiert, aber jetzt zeigt er immer noch nichts an.
Habe aus reiner Neugier einmal auf GridBagLayout umgestellt und dann funktioniert es. Aber ich will kein Gridbaglayout, sondern alles absolut plazieren.
Hast Du noch ne Idee?
Im Moment schaut mein Coode so aus:
Code:
private JList getJListFields() {
if (jListFiles == null) {
jListFiles = new JList();
jListFiles.setBounds(new Rectangle(14, 74, 227, 302));
model = new DefaultListModel();
ListFiles.setModel(model);
}
return jListFiles;
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jLabelKommentar = new JLabel();
...
// jContentPane.add(getJListFields(), null);
scroller = new JScrollPane(getJListFields());
scroller.setVisible(true);
jContentPane.add(scroller, null);
}
return jContentPane;
}
Wie ich schon sagte, scroller muss eine Größe bei einem Null-Layout zugewiesen werden. Sonst geht da nix. Das setVisible auf deinen scroller kannste dir übrigens sparen.
Und nochmal: Das Null-Layout ist eine ganz schlechte Idee, weil es wie gesagt zu verschiebungen kommt. Es reicht schon wenn bei Windows XP z. B. statt dem neuen Clickie-Buntie-Riesen-Button Design das Klassische ausgewählt wird um dein Layout zu zerstören.