Moin. Ich habe letztes Semester im Rahmen meines Studiums einen kleinen Meeressimulator geschrieben. Im Prinzip ist das eine kleine GUI, wo man Fische, Luftblasen etc. einfuegen kann, die sich dann im "Meer" bewegen.
Ich hab den jetzt nochmal ausgepackt, weil ich den gerne als Referenz fuer eine Bewerbung auf einen Ausbildungsplatz benutzen moechte und bin auf ein Problem mit der GUI gestossen, zu dem uns damals schon niemand eine Antwort geben konnte.
Auf der rechten Seite der GUI befinden sich 4 Buttons, 2 Textfelder, eine JComboBox und eine JList.
Das Problem ist die JList. Wenn man dem Ozean ein Objekt hinzufuegt, dann wird es in der JList angezeigt. Allerdings wird die JList immer groesser und verschiebt die anderen GUI-Elemente nach oben, bis sie aus der GUI rausgedrueckt sind.
Hier einmal der Konstruktionsabschnitt:
Und hier der Aufruf zum insert:
Und damit man sich besser vorstellen kann, wie die GUI aussieht, noch ein Screenshot:
Die Klasse EastNavi kuemmert sich uebrigens, wie der Name schon andeutet, nur um den rechten Teil der GUI.
Hat irgendjemand eine Ahnung, warum die JList das .setVisibleRowCount(4) ignoriert und warum da kein Scrollbalken existiert?
Danke schonmal im Voraus fuer die Hilfe
Ich hab den jetzt nochmal ausgepackt, weil ich den gerne als Referenz fuer eine Bewerbung auf einen Ausbildungsplatz benutzen moechte und bin auf ein Problem mit der GUI gestossen, zu dem uns damals schon niemand eine Antwort geben konnte.
Auf der rechten Seite der GUI befinden sich 4 Buttons, 2 Textfelder, eine JComboBox und eine JList.
Das Problem ist die JList. Wenn man dem Ozean ein Objekt hinzufuegt, dann wird es in der JList angezeigt. Allerdings wird die JList immer groesser und verschiebt die anderen GUI-Elemente nach oben, bis sie aus der GUI rausgedrueckt sind.
Hier einmal der Konstruktionsabschnitt:
Java:
public class EastNavi extends JPanel {
/**
* Collection of GUI-Elements on the right side.
*/
private GUI gui;
private JButton save;
private JButton load;
private JButton insert;
private JButton delete;
private JComboBox oceanObjects;
private JTextField posX;
private JTextField posY;
private JList objectList;
private DefaultListModel objectListModel = new DefaultListModel();
private JLabel xPos;
private JLabel yPos;
/**
* Constructor for the EastNavi
* @param ocean The ocean
* @param gui The GUI
*/
public EastNavi(GUI gui) {
this.gui = gui;
String[] possibleObjects = new String[4];
possibleObjects[0] = "Fish";
possibleObjects[1] = "Bubble";
possibleObjects[2] = "Plant";
possibleObjects[3] = "Stone";
save = new JButton("SAVE");
load = new JButton("LOAD");
objectList = new JList(objectListModel);
objectList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
objectList.setVisibleRowCount(4);
JScrollPane listScroller = new JScrollPane(objectList);
listScroller.setPreferredSize(new Dimension(250,80));
insert = new JButton("INSERT");
delete = new JButton("DELETE");
oceanObjects = new JComboBox(possibleObjects);
posX = new JTextField();
posY = new JTextField();
xPos = new JLabel("X-Axis");
yPos = new JLabel("Y-Axis");
load.addActionListener(new LoadButtonListener());
save.addActionListener(new SaveButtonListener());
delete.addActionListener(new DeleteButtonListener());
insert.addActionListener(new InsertButtonListener());
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 1;
c.gridheight = 1;
c.gridwidth = 2;
add(insert, c);
c.gridx = 3;
c.gridy = 1;
c.gridheight = 1;
c.gridwidth = 2;
add(delete, c);
c.gridx = 1;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 2;
add(posX, c);
c.gridx = 0;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 1;
add(xPos, c);
c.gridx = 1;
c.gridy = 3;
c.gridheight = 1;
c.gridwidth = 2;
add(posY, c);
c.gridx = 0;
c.gridy = 3;
c.gridheight = 1;
c.gridwidth = 1;
add(yPos, c);
c.gridx = 3;
c.gridy = 2;
c.gridheight = 1;
c.gridwidth = 1;
add(oceanObjects, c);
c.gridx = 0;
c.gridy = 4;
c.gridheight = 2;
c.gridwidth = 2;
add(load, c);
c.gridx = 3;
c.gridy = 4;
c.gridheight = 2;
c.gridwidth = 2;
add(save, c);
c.fill = GridBagConstraints.NONE;
c.gridx = 0;
c.gridy = 6;
c.gridwidth = 2;
c.gridheight = 4;
objectList.setVisibleRowCount(4);
objectList.setVisible(true);
JScrollPane scroll = new JScrollPane(objectList);
add(objectList, c);
}
Und hier der Aufruf zum insert:
Java:
public void insertObjects(Ocean ocean) {
for (OceanObject obj : ocean.getOceanObjects()) {
objectListModel.addElement(obj);
new OceanThread(obj, ocean);
}
Und damit man sich besser vorstellen kann, wie die GUI aussieht, noch ein Screenshot:
Die Klasse EastNavi kuemmert sich uebrigens, wie der Name schon andeutet, nur um den rechten Teil der GUI.
Hat irgendjemand eine Ahnung, warum die JList das .setVisibleRowCount(4) ignoriert und warum da kein Scrollbalken existiert?
Danke schonmal im Voraus fuer die Hilfe