Hallo Community,
ich hab zwar etwas Erfahrung mit Swing-Guis in Java, hab aber bisher selten mit Layouts gearbeitet.
Nun möchte ich, dass mir mein Programm eine Anzahl Meldungen schickt, die dann auf einer GUI angezeigt werden.
Eine Meldung ist bei mir ein simples JLabel, in dem eine Nachricht steht. So weit so gut.
Ich habs auch schon geschafft, dass die untereinander stehen.
Allerdings nehmen die Label nicht die von mir definierte Größe an, sondern sind immer nur so groß wie der Text des Labels.
Ursprünglich wollte ich durch die Size festlegen, dass er auch bei einem FlowLayout alle Komponenten untereinander setzt, jetzt hab ich eine Lösung mit BoxLayout gefunden. Trotzdem möchte ich wenigstens die Höhe noch drin haben, damit zwischen den Texten der einzelnen Messages noch etwas Platz ist und es nicht so "gequetscht" aussieht.
Mit dem Alignment muss ich auch noch rumbasteln, aber das Größending ist erstmal wichtiger.
Ich hoffe, es ist einigermaßen verständlich, was mein Problem ist.
Bereits im Voraus vielen Dank für Antworten.
ich hab zwar etwas Erfahrung mit Swing-Guis in Java, hab aber bisher selten mit Layouts gearbeitet.
Nun möchte ich, dass mir mein Programm eine Anzahl Meldungen schickt, die dann auf einer GUI angezeigt werden.
Eine Meldung ist bei mir ein simples JLabel, in dem eine Nachricht steht. So weit so gut.
Ich habs auch schon geschafft, dass die untereinander stehen.
Allerdings nehmen die Label nicht die von mir definierte Größe an, sondern sind immer nur so groß wie der Text des Labels.
Java:
package gui;
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MessagePanel extends JPanel {
ArrayList<JLabel> messageList = new ArrayList<JLabel>();
public MessagePanel(String pTitle)
{
this.setSize(300, 500);
this.setBorder(BorderFactory.createLineBorder(Color.black));
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JLabel lblTitle = new JLabel(pTitle);
lblTitle.setSize(300, 25);
//lblTitle.setAlignmentX(Component.CENTER_ALIGNMENT);
this.add(lblTitle);
this.add(new JLabel(" "));
}
public void addMessage(String pMessage)
{
JLabel msgLabel = new JLabel(pMessage);
// msgLabel.setBorder(BorderFactory.createLineBorder(Color.black));
msgLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
[B] msgLabel.setSize(300,50);[/B]
messageList.add(msgLabel);
this.add(msgLabel);
}
}
Mit dem Alignment muss ich auch noch rumbasteln, aber das Größending ist erstmal wichtiger.
Ich hoffe, es ist einigermaßen verständlich, was mein Problem ist.
Bereits im Voraus vielen Dank für Antworten.