Hallo liebe Forum-Gemeinde.
erst einmal entschuldigt...ja GridBagLayout und ja, gab es schon millionen Fragen zu, aber ich finde keine Lösung zu meinem Problem :/
folgendes ist bei mir los:
Ich arbeite auf Arbeit an einem größeren Projekt und möchte für dieses Projekt einen kleinen Dialog bauen.
Soweit so gut, ich erstelle also eine Klasse "SmallDialog", diese erbt von JFrame.
Ich setze das Layout zu GridBagLayout und füge die Labels, die Textfelder und auch die beiden Buttons hinzu.
Ich setze die Größe und visible.
Das JFrame startet und alle Komponenten sind darauf auch zu sehen.
Nur leider habe ich oben am Rand des Frames noch einiges an Platz.
Ich setze den anchor auf "FIRST_LINE_START" aber es funktioniert einfach nicht.
Komisch das aber an sich das "LINE_START" und das "LINE_END" funktioniert und die Komponenten auch dementsprechen angezeigt werden.
Auch ist mir aufgefallen das wenn ich weighty setze (einmal für alle komponenten) die Buttons gar nicht berücksichtigt werden und dann dabei aus dem JFrame verschwinden
funktioniert es bei einem von euch(Code Beispiel folgt gleich)?
Woran könnte es liegen?
liegt es daran das JButton, JLabel und JTextField von Swing sind und GridBagConstraints aber zu AWT gehört?
Ich war immer der Meinung das der Layout Manager trotzdem funktioniert(funktionieren sollte?)
Es wäre sehr schön wenn mir hier jemand helfen könnte :/
Danke schonmal im Voraus
..ich dachte imemr ich hätte das GBL einigermaßen kapiert :/ ...Pustekuchen
Verwendete IDE: Eclipse
aktuellste Java version
Code:
so siehts aus, Rot markiert ist der Platz der "verschwendet" wird.
erst einmal entschuldigt...ja GridBagLayout und ja, gab es schon millionen Fragen zu, aber ich finde keine Lösung zu meinem Problem :/
folgendes ist bei mir los:
Ich arbeite auf Arbeit an einem größeren Projekt und möchte für dieses Projekt einen kleinen Dialog bauen.
Soweit so gut, ich erstelle also eine Klasse "SmallDialog", diese erbt von JFrame.
Ich setze das Layout zu GridBagLayout und füge die Labels, die Textfelder und auch die beiden Buttons hinzu.
Ich setze die Größe und visible.
Das JFrame startet und alle Komponenten sind darauf auch zu sehen.
Nur leider habe ich oben am Rand des Frames noch einiges an Platz.
Ich setze den anchor auf "FIRST_LINE_START" aber es funktioniert einfach nicht.
Komisch das aber an sich das "LINE_START" und das "LINE_END" funktioniert und die Komponenten auch dementsprechen angezeigt werden.
Auch ist mir aufgefallen das wenn ich weighty setze (einmal für alle komponenten) die Buttons gar nicht berücksichtigt werden und dann dabei aus dem JFrame verschwinden
funktioniert es bei einem von euch(Code Beispiel folgt gleich)?
Woran könnte es liegen?
liegt es daran das JButton, JLabel und JTextField von Swing sind und GridBagConstraints aber zu AWT gehört?
Ich war immer der Meinung das der Layout Manager trotzdem funktioniert(funktionieren sollte?)
Es wäre sehr schön wenn mir hier jemand helfen könnte :/
Danke schonmal im Voraus
..ich dachte imemr ich hätte das GBL einigermaßen kapiert :/ ...Pustekuchen
Verwendete IDE: Eclipse
aktuellste Java version
Code:
Java:
public class SmallDialog extends JFrame {
private static final long serialVersionUID = 2751044251008543772L;
/*
* Initialize Components
*/
JLabel lblIdent = new JLabel("Identifier of new data class");
JLabel lblName = new JLabel("Name of new data class");
JTextField txtIdentifier = new JTextField();
JTextField txtName = new JTextField();
JButton btnOK = new JButton("OK");
JButton btnCancel = new JButton("Cancel");
public SmallDialog() {
// Set title
super("Insert new DataClass");
setDefaults();
GridBagConstraints constraints = new GridBagConstraints();
// set constraints for the first component
constraints.anchor = GridBagConstraints.FIRST_LINE_START; // already tried NORTH,NORTHEAST,PAGE_START
constraints.weightx = 1.0;
// already tried weighty 0.1 and 1.0;
constraints.fill = GridBagConstraints.BOTH;
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.gridheight = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(2, 10, 2, 10);
// add first component
this.add(lblIdent, constraints);
// set the next component to be the last in this row
constraints.gridwidth = GridBagConstraints.REMAINDER;
this.add(lblName, constraints);
// change constraints again
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(0, 10, 0, 10);
this.add(txtIdentifier, constraints);
//...and again -.-
constraints.gridwidth = GridBagConstraints.REMAINDER;
this.add(txtName, constraints);
//...aaand again
constraints.fill = GridBagConstraints.NONE;
constraints.weightx = 0;
constraints.weighty = 1;
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.anchor = GridBagConstraints.LAST_LINE_START;
constraints.insets = new Insets(5, 10, 10, 10);
this.add(btnCancel, constraints);
//...and a list time...
constraints.anchor = GridBagConstraints.LAST_LINE_END;
constraints.gridwidth = GridBagConstraints.REMAINDER;
this.add(btnOK, constraints);
setVisible(true);
}
/**
* Sets default parameters for the Dialog.
*/
private void setDefaults() {
this.setSize(350, 150); // When i set a smaller size, the buttons begin to vanish
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLayout(new GridBagLayout());
// setResizable(false); // Already tried with disabled resize
}
}