G
Gast
Gast
Ich versuche mich zum ersten Mal am GridBagLayout und bisher hat auch alles gut geklappt. Drei Komponenten konnte ich einfügen, der Rest soll angezeigt werden, je nach dem was im DropDown ausgewählt wird. Leider wird aber gar nichts angezeigt.... Warum?
Das ist meine Methode zum setzen der Eigenschaften des GridBags:
Und hier der Code, bei dem wohl irgendetwas nicht stimmen kann:
Mit pack() wird ausser den Komponenten, die zu Beginn dort stehen nichts angezeigt und das Fenster verkleinert sich auf die Grösse der Titelleiste.
Bei anderen Funktionen wie
repaint();
getContentPane().doLayout();
getContentPane().validate();
update(getGraphics());
bleibt das Fenster in der richtigen Grösse, die Anzeige erscheint jedoch auch nicht.
Ich weiss einfach nicht, was ich falsch mache und wäre dankbar, wenn mir jemand einen Tipp geben könnte.
Das ist meine Methode zum setzen der Eigenschaften des GridBags:
Code:
private void buildConstraints(GridBagConstraints gbc,int x, int y, int w, int h, double wx, double wy, int fill, int anchor){
gbc.insets = new Insets(5, 5, 5, 5);
gbc.gridx = x; // start cell in a row
gbc.gridy = y; // start cell in a column
gbc.gridwidth = w; // how many column does the control occupy in the row
gbc.gridheight = h; // how many column does the control occupy in the column
gbc.weightx = wx; // relative horizontal size
gbc.weighty = wy; // relative vertical size
gbc.fill = fill; // the way how the control fills cells
gbc.anchor = anchor; // alignment
}
Und hier der Code, bei dem wohl irgendetwas nicht stimmen kann:
Code:
void addComponents(){
question = new JLabel("Möchten Sie ein zufälliges Kreuzworträtsel erstellen "+
"oder Wörter aus einer Liste auswählen?");
question.setForeground(Color.LIGHT_GRAY);
buildConstraints(gbc, 0, 0, 4, 1, 0, 1.0, GridBagConstraints.NONE, GridBagConstraints.CENTER);
gbc.insets = new Insets(20,30,5,5);
gbl.setConstraints(question, gbc);
getContentPane().add(question);
selectGenType = new JComboBox();
selectGenType.addItem("Auswahl aus Liste");
selectGenType.addItem("Zufall");
selectGenType.setBackground(Color.WHITE);
buildConstraints(gbc, 0, 1, 2, 1, 0.5, 1.0, GridBagConstraints.NONE, GridBagConstraints.EAST);
gbl.setConstraints(selectGenType, gbc);
getContentPane().add(selectGenType);
go = new JButton("GO");
go.setBackground(Color.WHITE);
buildConstraints(gbc, 2, 1, 2, 1, 0.5, 0, GridBagConstraints.NONE, GridBagConstraints.WEST);
gbl.setConstraints(go, gbc);
go.addActionListener(this);
getContentPane().add(go);
pack();
}
public void actionPerformed (ActionEvent e){
String s = e.getActionCommand();
if (s.equals("GO")){
if(selectGenType.getSelectedItem().equals("Auswahl aus Liste")) {
getContentPane().removeAll();
getContentPane().add(question);
getContentPane().add(selectGenType);
getContentPane().add(go);
open = new JLabel("Datei öffnen:");
open.setForeground(Color.LIGHT_GRAY);
buildConstraints(gbc, 0, 2, 1, 1, 0, 1.0, GridBagConstraints.NONE, GridBagConstraints.EAST);
gbl.setConstraints(open, gbc);
getContentPane().add(open);
openTextField = new JTextField("");
openTextField.setBackground(Color.WHITE);
buildConstraints(gbc, 1, 2, 1, 1, 0, 0, GridBagConstraints.NONE, GridBagConstraints.WEST);
gbl.setConstraints(openTextField, gbc);
getContentPane().add(openTextField);
usw., es werden noch weitere Elemente eingefügt...
pack();
}
}
Mit pack() wird ausser den Komponenten, die zu Beginn dort stehen nichts angezeigt und das Fenster verkleinert sich auf die Grösse der Titelleiste.
Bei anderen Funktionen wie
repaint();
getContentPane().doLayout();
getContentPane().validate();
update(getGraphics());
bleibt das Fenster in der richtigen Grösse, die Anzeige erscheint jedoch auch nicht.
Ich weiss einfach nicht, was ich falsch mache und wäre dankbar, wenn mir jemand einen Tipp geben könnte.