FormLayout Panel-Breite

Andi_CH

Top Contributor
Ich erstelle den obersten Teil (die drei Label und Felder als JPanel)
(siehe buildInOutPanel() weiter unten)

In der übergeordneten Routine (buildTab()) frage ich dann wie breit das JPanel ist und möchte den Wert verwenden, um das Textfeld und das buttonPanel genau gleich breit darzustellen.
(Je nach Sprache der Texte wird das unterschiedlich breit)

Das buttonPanel wird allerdings zu breit - so rein heuristisch habe ich herausgefunden, dass ich 28 abziehen muss, damit es stimmt - was ist da los? Warum liefert mir die Frage nach der Breite des JPanels einen zu grossen Wert?

Das komplette Sourcefile habe ich angehängt.

Java:
	private JPanel buildInOutPanel() {
		final int inOutFieldWidth = 100;

		JTextField aufLastFeld = new JTextField();
		JTextField deckenLastFeld = new JTextField();
		JTextField linienLastFeld = new JTextField();

		final int height = aufLastFeld.getSize().height;
		aufLastFeld.setSize(inOutFieldWidth, height);
		deckenLastFeld.setSize(inOutFieldWidth, height);
		linienLastFeld.setSize(inOutFieldWidth, height);
		String fmt = "max(pref;" + inOutFieldWidth + ")";
		linienLastFeld.setText(fmt);
		FormLayout formLayout = new FormLayout(
				"pref"								// Spalte 1
				+ ", 3dlu"							// Spalte 2
				+ ", " + fmt						// Spalte 3
				,
				"pref"								// Zeile 1
				+ ", 3dlu"							// Zeile 2
				+ ", pref"							// Zeile 3
				+ ", 3dlu"							// Zeile 4
				+ ", pref"							// Zeile 5
				+ ", 3dlu"							// Zeile 6
				+ ", pref"							// Zeile 7
		);
		PanelBuilder builder;
		if (debug) {
			builder = new DefaultFormBuilder(formLayout, new FormDebugPanel());
		} else {
			builder = new DefaultFormBuilder(formLayout, new JPanel());
		}
		builder.setDefaultDialogBorder();
		CellConstraints cc = new CellConstraints();
		builder.addLabel("Auflast nd (kN/m)",		cc.xy (1, 1));
		builder.add(aufLastFeld,					cc.xyw(3, 1, 1));
		builder.addLabel("Deckenlast vd (kN/m)",	cc.xy (1, 3));
		builder.add(deckenLastFeld,					cc.xyw(3, 3, 1));
		builder.addSeparator("",					cc.xy (3, 5));
		builder.addLabel("Linienlast vd (kN/m)",	cc.xy (1, 7));
		builder.add(linienLastFeld, 				cc.xy (3, 7));
		return builder.getPanel();
	}

Java:
	private JComponent buildButtonPanel(int width) {
		JButton mButtonOK     = new JButton();
		JButton mButtonCancel = new JButton();
		Dimension buttonDim = new Dimension(100, 27);
		mButtonOK.setPreferredSize(buttonDim);
		// einige nicht relevante Zeilen entfernt - Actionlistener etc.

		mButtonCancel.setPreferredSize(buttonDim);
		// einige nicht relevante Zeilen entfernt

		DefaultFormBuilder builder;

// Warum muss hier -28 gerechnet werden?
		int space = Math.max(10, width - 28 - 2 * buttonDim.width);
		String fmt = space + "";
		FormLayout layout = new FormLayout(
				"pref, " + fmt + ", pref",
				"pref"
		);
		if (debug) {
			builder = new DefaultFormBuilder(layout, new FormDebugPanel());
		} else {
			builder = new DefaultFormBuilder(layout, new JPanel());
		}
		builder.setDefaultDialogBorder();
		CellConstraints cc = new CellConstraints();
		builder.add(mButtonOK,		cc.xy (1, 1));
		builder.add(mButtonCancel,	cc.xy (3, 1));
		return builder.getPanel();
	}

Java:
	private JComponent buildTab(String title, JTextArea area) {
		JComponent inoutPanel = buildInOutPanel();
		final int width = inoutPanel.getMinimumSize().width;
		final String columnSpec = "max(" + 10 + ";pref)";
		FormLayout layout = new FormLayout(
				columnSpec,
				"pref, 9dlu, pref, 3dlu, fill:default, 9dlu, pref, 9dlu, pref"
		);
		PanelBuilder builder = new PanelBuilder(layout);
		builder.setDefaultDialogBorder();
		CellConstraints cc = new CellConstraints();
		builder.add(inoutPanel,			cc.xy(1, 1));
		builder.add(area,				cc.xy(1, 3));
		JComponent buttonPanel = buildButtonPanel(width);
		builder.add(buttonPanel,		cc.xy(1, 9));
		JComponent panel = builder.getPanel();
		return panel;
	}
 

Anhänge

  • Example10.png
    Example10.png
    33,2 KB · Aufrufe: 56
  • Example10.java
    10,2 KB · Aufrufe: 16
Zuletzt bearbeitet von einem Moderator:

Andi_CH

Top Contributor
Montagmorgenpush ;-)

Sorry, aber das Problem mit den unterschiedlichen Dimensionen brennt mir immer noch unter den Nägeln.

Warum ist das so? Woher kommt die unterschiedliche Vorstellung von "Grösse"?
Wie gross ist denn der Unterschied - ist der wirklich einfach Konstant?
 

jgh

Top Contributor
mal so ins Blaue geraten...hast du mal das [c]pack()[/c] auskommentiert und dann geschaut, ob die Größe passt?
Denn du "baust" dir ja deine Componenten zusammen, dabei fragst du die Größe ab, bekommst ein Ergebnis und am Ende rufst du auf den Frame nochmal pack() auf, was evtl. die Größendifferenz erklären könnte.
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Daran liegt es nicht

Einfach so nebenbei - ich poste nicht vergebens den Code (es wird ja auch immer wieder darauf hingewiesen, dass man lauffäfhige Beispiele posten soll - der Code läuft und ist virenfrei:)
 
S

SlaterB

Gast
der Code enthält unbekannte Klasse wie DefaultFormBuilder und ist daher unbrauchbar ;)
in habe den Titel angepasst, wenn falsch dann Bescheid sagen
 

Andi_CH

Top Contributor
Da ja hier nichts konstruktives kommt schliesse ich das mal ab.
Wenn ich jetzt was anhänge wird der titel wieder geändert und passt dann gar nicht mehr zum Anfang.
 

jgh

Top Contributor
Daran liegt es nicht

Einfach so nebenbei - ich poste nicht vergebens den Code (es wird ja auch immer wieder darauf hingewiesen, dass man lauffäfhige Beispiele posten soll - der Code läuft und ist virenfrei:)

Da ja hier nichts konstruktives kommt schliesse ich das mal ab.
Wenn ich jetzt was anhänge wird der titel wieder geändert und passt dann gar nicht mehr zum Anfang.

Lauffähig bedeutet...kopieren, einfügen, ausführen.
Das geht mit deinem Code nicht, sonst hätte ich das schon gemacht.

Aber wahrscheinlich bist du eh gerade nicht gut drauf, wenn ich deinen letzten Post mal interpretiere :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G FormLayout dynamisch wachsend AWT, Swing, JavaFX & SWT 0
GUI-Programmer LayoutManager FormLayout mit speziellen Komponentenabstand AWT, Swing, JavaFX & SWT 4
A Beschreibung Parameter FormLayout AWT, Swing, JavaFX & SWT 8
F FormLayout Größen Problem AWT, Swing, JavaFX & SWT 2
N Verschiedene FormLayout in einem Panelbuilder AWT, Swing, JavaFX & SWT 3
G FormLayout minimum größe AWT, Swing, JavaFX & SWT 7
G FormLayout AWT, Swing, JavaFX & SWT 2
V SWT (JFace): bekomme das FormLayout nicht hin. AWT, Swing, JavaFX & SWT 4
T Vertikaler JSeparator in FormLayout AWT, Swing, JavaFX & SWT 3
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M Swing Panel klassenübergreifend ändern AWT, Swing, JavaFX & SWT 6
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H Scroll Panel wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 6
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
S Vaadin: Panel AWT, Swing, JavaFX & SWT 10
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
K Panel zu Laufzeit ändern AWT, Swing, JavaFX & SWT 6
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
S Panel rapaint AWT, Swing, JavaFX & SWT 18
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
M Panel in SWT einfügen AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen

Neue Themen


Oben