Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen

Tassimmo

Mitglied
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.

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);
	}

}
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. :oops:
Bereits im Voraus vielen Dank für Antworten.
 

Tassimmo

Mitglied
Zumindest hab ich jetzt den verticalStrut() gefunden, der mir eine Trennung zwischen zwei verschiedenen Labels setzt, damit die nicht so aneinander kleben. Dafür schonmal danke.
Nun hab ich ein Fenster der Breite 300. Der Text, den ich in die Labels eingebe, muss aber natürlich nicht zwingend so lang sein. Leider scheint mein Layout jedoch die Größe meines Labels zu ignorieren, da es immer nur so breit ist wie der Text innerhalb.

fd_test1.PNG
Das Label ist rot markiert und sollte eigentlich die komplette Fensterbreite (bis zu der schwarzen Linie rechts) laufen...
Der Labelcode hat sich seit dem obigen Beispiel nicht geändert.

In deinem Link hab ich nur Wege gefunden, um den Abstand zwischen zwei Komponenten zu verändern, nicht aber die Größe eines Elements. Daher muss ich grad leider nochmal fragen^^
 
Zuletzt bearbeitet:

strußi

Top Contributor
label

Java:
Dimension d =msgLabel.getSize();
double hight =d.getHeight();
d.setSize(300, hight);
msgLabel.setPreferredSize( d);
probier das mal aus. mir fehlt die zeit und die anderen klassen um das zu testen.
 

Dumdidum

Mitglied
Falls die Pixelanzahl immer gleich bleibt ist der einfachste Weg auch die Minimum/Maximum/Preferred Größe zu setzten:

Java:
   msgLabel.setSize(300,50);
   msgLabel.setMinimumSize(new Dimension(300,50));
   msgLabel.setMaximumSize(new Dimension(300,50));
   msgLabel.setPreferredSize(new Dimension(300,50));
 

Tassimmo

Mitglied
Leider hat weder der Umweg über die Dimension noch das Setzen der Minimum/Maximum/PreferredSize geholfen. Ich verstehs absolut nicht, warum mein Programm die Größenangabe schlichtweg ignoriert. Die anderen Attribute, die ich setze, wie Border oder Background, werden ja auch mitgenommen, wie es sich gehört...
 

Dumdidum

Mitglied
Kannst du mal noch mehr code Zeigen!? Also man sieht ja z.B. auch garnicht wo du z.B. die Farbe setzt usw...

und ich habe es gerade mal kurz mit meinem Vorschlag getestet:

Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
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);
		msgLabel.setBackground(Color.RED);
		msgLabel.setOpaque(true);
		 msgLabel.setSize(300,25);
		 msgLabel.setMinimumSize(new Dimension(300,25));
		 msgLabel.setMaximumSize(new Dimension(300,25));
		 msgLabel.setPreferredSize(new Dimension(300,25));
		messageList.add(msgLabel);
		this.add(msgLabel);
	}
	
	public static void main(String[] args) {
		JFrame testFrame = new JFrame();
		MessagePanel messagePanel = new MessagePanel("lalelu");
		
		messagePanel.addMessage("hund");
		messagePanel.addMessage("katze");
		messagePanel.addMessage("maus");
		messagePanel.addMessage("kind");
		
		testFrame.add(messagePanel);
		testFrame.setVisible(true);
		testFrame.pack();
	}
	
}


Also bei mir klappt das so....
 

Tassimmo

Mitglied
Ich hab grad das typische Programmiererproblem: Ich hab deinen Vorschlag grad nochmal reingesetzt, nachdem ich was gui-irrelevantes am Programm verändert hab, und plötzlich ist meine Größe da :pfeif:

Keine Ahnung, was vorher das Problem war... Das ärgert mich zum ersten und is mir zum anderen a bissel peinlich xDD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GridLayout: Größe einer Komponente ändern AWT, Swing, JavaFX & SWT 2
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
L Größe einer Componente herausfinden AWT, Swing, JavaFX & SWT 2
K Größe einer Scrollbar im Dialogfenster ändern AWT, Swing, JavaFX & SWT 2
I SWT Größe einer Tabellenzeile, -spalte ändern AWT, Swing, JavaFX & SWT 8
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
A Größe einer JList beeinflussen AWT, Swing, JavaFX & SWT 2
G Feste Größe einer TextArea AWT, Swing, JavaFX & SWT 2
J Größe einer Zeichnung anpassen AWT, Swing, JavaFX & SWT 2
P Größe einer JComboBox fest definieren AWT, Swing, JavaFX & SWT 8
J Größe einer JTextArea dynamisch anpassen. AWT, Swing, JavaFX & SWT 2
S Setzen der richtigen Größe einer JTextPane ohne Rand AWT, Swing, JavaFX & SWT 4
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Yonnig JavaFX Größe von WebView an Content anpassen AWT, Swing, JavaFX & SWT 3
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
M Java FX größe der shapes anpassen AWT, Swing, JavaFX & SWT 0
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
Neumi5694 Größe von Komboboxen neu berechnen AWT, Swing, JavaFX & SWT 3
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
C Größe des Mauszeigers ermitteln AWT, Swing, JavaFX & SWT 5
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D JavaFX Alle Knöpfe auf die gleiche Größe AWT, Swing, JavaFX & SWT 14
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
F Gui weicht von Designpreview ab (kein fensterrahmen, andere größe) AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
M SWT ScrollPane Größe zu klein AWT, Swing, JavaFX & SWT 6
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
S Swing JFrame hat nicht die Größe, die ich eingegeben habe AWT, Swing, JavaFX & SWT 3
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
T Swing Größe des Randes AWT, Swing, JavaFX & SWT 2
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
N JPanel größe wissen/festlegen vor dem Anzeigen AWT, Swing, JavaFX & SWT 3
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
G JavaFX Größe der Parentknoten AWT, Swing, JavaFX & SWT 5
R JPanel-Größe verändert sich nicht. Warum? AWT, Swing, JavaFX & SWT 5
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
A JPanel oder GridLayout Größe festsetzten AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
SimonRap Swing JFrame Größe zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Größe der JFrame Decorations herausfinden? AWT, Swing, JavaFX & SWT 4
O Swing Jpanel autom. auf JFrame Größe bringen AWT, Swing, JavaFX & SWT 6
M Swing JLabel mit fester größe nachträglich formatieren AWT, Swing, JavaFX & SWT 2
A JComponent Größe AWT, Swing, JavaFX & SWT 8
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
S Swing TextPane größe beschränken AWT, Swing, JavaFX & SWT 2
R Ellipse2D ändert Größe AWT, Swing, JavaFX & SWT 3
H Swing JButton größe ändern AWT, Swing, JavaFX & SWT 5
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
P JPanel Größe ändern AWT, Swing, JavaFX & SWT 22
I Größe eines rotierten Images AWT, Swing, JavaFX & SWT 3
C Button Größe einstellen klappt nicht (setBounds) AWT, Swing, JavaFX & SWT 8
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
R Größe/Anordnung der Gui-Elemente automatisch? AWT, Swing, JavaFX & SWT 6
S Die größe eines JButton ändern AWT, Swing, JavaFX & SWT 7
U feste Größe für den Zeichenbereich eines JFrames AWT, Swing, JavaFX & SWT 4
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
P Tatsächliche Größe für Applet AWT, Swing, JavaFX & SWT 3
C Swing GridBag-Probleme (Größe und Ausrichtung) AWT, Swing, JavaFX & SWT 3
K JFrame Größe ändern AWT, Swing, JavaFX & SWT 4
M jTable - Größe beim Erzeugen AWT, Swing, JavaFX & SWT 4
hdi Swing JFrame Größe ermitteln AWT, Swing, JavaFX & SWT 6
S Swing jFrame auf maximale Größe setzten AWT, Swing, JavaFX & SWT 7
Z größe der komponenten bestimmen AWT, Swing, JavaFX & SWT 16

Ähnliche Java Themen

Neue Themen


Oben