Hi @ all,
könnte mal eure Hilfe gebrauchen. Ich habe ein JFrame mit einem Container, der ein GridBagLayout hat. Darin befindet sich ein JSpinner. bei Änderung des Wertes vom Spinner soll eine Komponente hinzugefügt werden. Dies funktioniert auch soweit, nur wird mir meine Komponente nicht angezeigt. auch ein container.repaint() im event-handling bringt nicht den gewünschten Erfolg. Ich sehe die Komponente nicht. Wenn ich den Frame größer ziehe ist sie aber plötzlich da.
Wie kann ich also mein Programm dazu veranlassen, die Komponente zu zeichnen?
hier mal ein bisschen code:
Danke für eure Mühen...
Gruß Marco
könnte mal eure Hilfe gebrauchen. Ich habe ein JFrame mit einem Container, der ein GridBagLayout hat. Darin befindet sich ein JSpinner. bei Änderung des Wertes vom Spinner soll eine Komponente hinzugefügt werden. Dies funktioniert auch soweit, nur wird mir meine Komponente nicht angezeigt. auch ein container.repaint() im event-handling bringt nicht den gewünschten Erfolg. Ich sehe die Komponente nicht. Wenn ich den Frame größer ziehe ist sie aber plötzlich da.
Wie kann ich also mein Programm dazu veranlassen, die Komponente zu zeichnen?
hier mal ein bisschen code:
Code:
public class CCustomize extends JFrame {
private int m_countButtons;
CCustomize() {
super("Einstellungen");
initialize();
}
private int setComboBoxes() {
for (int i=1; i <= m_countButtons; i++) {
JComboBox comboBox = new JComboBox();
container.addGBLComponent(container, comboBox, 1, ((i*2)-1)+2, 1, 1, 0, 0, GridBagConstraints.HORIZONTAL,new Insets(5,5,5,5));
}
return 0;
}
private void initialize() {
container = new CContainer(new GridBagLayout());
this.setContentPane(container);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
bCancel = new JButton("Cancel");
bCancel.addActionListener(new CBCancelPressed());
bOK = new JButton("OK");
bOK.addActionListener(new CBOKPressed());
jsCountButtons = new JSpinner(spmodel);
jsCountButtons.addChangeListener(new CCountChanged());
// Komponenten ins layout setzen
// Zelle |Ausdehn| darf | Komponenten an Zelle anpassen?
// größer werden
// Platzhalter
container.addGBLComponent(container, new JLabel(), 0, 0, 1, 1, 0, 0, GridBagConstraints.NONE,new Insets(5,5,5,5));
container.addGBLComponent(container, new JLabel(), 2, 0, 1, 1, 0, 0, GridBagConstraints.NONE,new Insets(0,5,0,5));
container.addGBLComponent(container, new JLabel(), 4, 0, 1, 1, 1, 0, GridBagConstraints.NONE,new Insets(0,5,0,5));
container.addGBLComponent(container, new JLabel(), 0, 10, 1, 1, 0, 1, GridBagConstraints.NONE,new Insets(0,5,0,5));
// Komponenten
container.addGBLComponent(container, new JLabel("Anzahl Buttons:"), 1, 1, 1, 1, 0, 0, GridBagConstraints.NONE, new Insets(5,5,5,5));
container.addGBLComponent(container, new JLabel(), 2, 1, 1, 1, 0, 0, GridBagConstraints.NONE, new Insets(5,5,5,5));
container.addGBLComponent(container, jsCountButtons, 3, 1, 1, 1, 0, 0, GridBagConstraints.NONE, new Insets(5,5,5,5));
container.addGBLComponent(container, bCancel, 5, 1, 1, 1, 0, 0, GridBagConstraints.NONE,new Insets(5,5,5,5));
container.addGBLComponent(container, bOK, 5, 2, 1, 1, 0, 0, GridBagConstraints.HORIZONTAL,new Insets(5,5,5,5));
}
private class CCountChanged implements ChangeListener {
public void stateChanged(ChangeEvent e){
m_countButtons = spmodel.getNumber().intValue();
setComboBoxes();
container.repaint();
}
}
Danke für eure Mühen...
Gruß Marco