Hier ist ein JFrame, den ich mit einer Reihe von JLabels mit den folgenden Eigenschaften zeigen wollte:
- vertikal gestapelt
- Horizontal zentriert
- grüne Grenze
- weißer Hintergrund
- blauer Text
Aber stattdessen bekomme ich das hier:
Der blaue Text, der vertikal gestapelt ist, und der grüne Rahmen funktionieren gut, aber der weiße Hintergrund und die horizontale Zentrierung funktionieren nicht. Ich hätte auch gedacht, dass sich die Beschriftungen über die gesamte Breite des JPanels erstrecken würden.
Was mache ich falsch?
edit: Verfehlt diese Frage über die Hintergrundfarbe. Also meine verbleibende Frage ist über BoxLayout und die Positionierung von Komponenten in der anderen Achse.
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class BoxLayoutLabelsTest extends JFrame
{
public BoxLayoutLabelsTest(String title)
{
super(title);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
addLabel(panel, "Hydrogen");
addLabel(panel, "Helium");
addLabel(panel, "Lithium");
addLabel(panel, "Beryllium");
addLabel(panel, "Boron");
setContentPane(panel);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
static private void addLabel(JPanel panel, String text) {
JLabel label = new JLabel(text);
label.setBorder(BorderFactory.createLineBorder(Color.GREEN));
label.setBackground(Color.WHITE);
label.setForeground(Color.BLUE);
label.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label);
}
public static void main(String[] args) {
new BoxLayoutLabelsTest("BoxLayoutLabelsTest").setVisible(true);
}
}