Hallo Leute,
ich habe ein Formular mit dem GridBagLayout-Manager geschrieben. Soweit funktioniert auch alles, wäre da nicht ein kleiner Schönheitsfehler. Ich füge nach dem klickes des Buttons ein JTable dem Formular hinzu. Dummerweise verändern sich die Maße des Formulars. Statt schlank und rank ist es nun klein und in die länge gezogen.
Hier wird das Formular in der main-Methode erzeugt:
hier ein kleiner ausschnitt des Formulars bevor man auf dem button klickt. Eigentlich alles nichts was man durchblicken müsste. Der teil funktioniert ja tadellos
Klickt man nun auf dem Button so übergibt der Button ein actionevent zum FormListener (hier nicht dargestellt) dort wird mit einer geeigneten Methode
das Ausgangsformular durch ein JTable ergänzt. Wie gesagt, leider so, dass die Formularform sich verändert.
Gibt es eine Möglichkeit das zu vermeiden?
MFG enrix
ich habe ein Formular mit dem GridBagLayout-Manager geschrieben. Soweit funktioniert auch alles, wäre da nicht ein kleiner Schönheitsfehler. Ich füge nach dem klickes des Buttons ein JTable dem Formular hinzu. Dummerweise verändern sich die Maße des Formulars. Statt schlank und rank ist es nun klein und in die länge gezogen.
Hier wird das Formular in der main-Methode erzeugt:
Code:
public static void main(String[] args) {
// TODO code application logic here
Form Form1 = new Form();
Form1.init();
Form1.setVisible(true);
Form1.setLocation(100, 100);
Form1.setSize(500,700);
}
hier ein kleiner ausschnitt des Formulars bevor man auf dem button klickt. Eigentlich alles nichts was man durchblicken müsste. Der teil funktioniert ja tadellos
Code:
private GridBagConstraints build_c(int gx, int gy, int gw, int gh, int wx, int wy){
GridBagConstraints gbc = new GridBagConstraints();
//Wo soll die Komponente plaziert werden
gbc.gridx = gx;
gbc.gridy = gy;
//wie viele Zellen soll die Kompinente einnehmen
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;
return gbc;
}
public Form() {
}
public void init(){
setBackground(Color.MAGENTA);
setLayout(L);
c = build_c(0,0,1,3,100,0);
c.fill = GridBagConstraints.BOTH;
L.setConstraints(Edit1, c);
add(Edit1);
//Zwei AusgabeFelder
c = build_c(1,0,1,1,0,0);
c.fill=GridBagConstraints.NONE;
JLabel l_dez = new JLabel("Dezimal");
L.setConstraints(l_dez, c);
add(l_dez);
c = build_c(1,1,1,1,0,0);
c.fill=GridBagConstraints.NONE;
JLabel l_bin = new JLabel("Binary");
L.setConstraints(l_bin, c);
add(l_bin);
//zwei Textfelder
c = build_c(2,0,1,1,100,0);
c.fill=GridBagConstraints.HORIZONTAL;
L.setConstraints(Edit2, c);
add(Edit2);
c = build_c(2,1,1,1,100,0);
c.fill=GridBagConstraints.HORIZONTAL;
L.setConstraints(Edit3, c);
add(Edit3);
//Button
But.addActionListener(new FormListener(this));
c = build_c(0,4,1,1,20,0);
c.fill=GridBagConstraints.LINE_START;
L.setConstraints(But, c);
add(But);
Klickt man nun auf dem Button so übergibt der Button ein actionevent zum FormListener (hier nicht dargestellt) dort wird mit einer geeigneten Methode
das Ausgangsformular durch ein JTable ergänzt. Wie gesagt, leider so, dass die Formularform sich verändert.
Code:
}
public void setAbakus(Object[][] rows, Object[] col){
JTable abakus = new JTable(rows,col);
abakus.setBackground(Color.GREEN);
abakus.setGridColor(Color.CYAN);
c = build_c(0,8,1,3,100,100);
c.fill = GridBagConstraints.NONE;
L.setConstraints(abakus, c);
add(abakus);
pack();
}
}
Gibt es eine Möglichkeit das zu vermeiden?
MFG enrix