ich habe 3 buttons in einer Reihe auf einem Panel. Diese buttons sollen bei Klick des entsprechenden buttons ihre Position ändern. Es gibt 3 Möglichkeiten (AlignmentY): top, center, bottom.
Mein Problem: Die Buttons bleiben immer an der selben Stelle. Obwohl beim Auslesen des AlignmentY der geänderte Wert ausgegeben wird, bleiben die buttons immer dort. Ich dachte mit
Mein Problem: Die Buttons bleiben immer an der selben Stelle. Obwohl beim Auslesen des AlignmentY der geänderte Wert ausgegeben wird, bleiben die buttons immer dort. Ich dachte mit
frame.repaint()
würde das neu gezeichnet werden??
Java:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GUI2 implements ActionListener {
JFrame frame = new JFrame("Ausrichtung im JPanel (Beispielprogramm)");
public String[] beschriftung = { "OBEN", "MITTE", "UNTEN" };
public JPanel panel = new JPanel();
public JButton[] button = new JButton[3];
BoxLayout layout;
public GUI2() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
for (int x=0; x<3; x++) {
button[x] = new JButton();
button[x].setText(beschriftung[x]);
button[x].setAlignmentY(Component.TOP_ALIGNMENT);
button[x].addActionListener(this);
panel.add(button[x]);
}
String titeltext = Float.toString(button[0].getAlignmentY());
panel.setBorder(BorderFactory.createTitledBorder(this.getBorderText()));
frame.add(panel);
frame.setSize(400, 150);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private String getBorderText() {
float f = button[0].getAlignmentY();
if (f == 0.0) {
return "OBEN AKTIV";
} else if (f == 0.5) {
return "MITTE AKTIV";
} else if (f == 1.0) {
return "UNTEN AKTIV";
} else {
return "unbekannt";
}
}
@Override
public void actionPerformed(ActionEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
if (e.getSource() == button[0]) {
for (int i=0; i<3; i++) {
button[i].setAlignmentY(Component.TOP_ALIGNMENT);
}
}
if (e.getSource() == button[1]) {
for (int i=0; i<3; i++) {
button[i].setAlignmentY(Component.CENTER_ALIGNMENT);
}
}
if (e.getSource() == button[2]) {
for (int i=0; i<3; i++) {
button[i].setAlignmentY(Component.BOTTOM_ALIGNMENT);
}
}
panel.setBorder(BorderFactory.createTitledBorder(this.getBorderText()));
frame.repaint();
}
}