Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben

Burny91

Mitglied
Hallo,

ich arbeite gerade an einem SQL-Browser. Dafür nutze ich ein JSplitPane um zwei Bereiche zu unterteilen. Der eine ist ein JTree für die Navigation durch erstellte Datenbanken und der zweite ist für Statements und die Rückgabe der ResutSets.

Nun zum Problem - Ich habe die beiden Teile in eine GridBagLayout eingesetzt um den Vorgaben meines Lehrers gerecht zu werden. Wenn ich nun das vertikale SplitPane nach links verschiebe ist verkleinert sich der Bereich so wie ich es haben will. Doch danach lässt sich das Pane nicht mehr nach rechts verschieben. Ich habe die Vermutung das ich mit dem verschieben des SplitPanes die festgelegten GridbagContraints verändere. Liege ich dort richtig?

Bild: http://www.bilder-hochladen.net/files/gx5s-1-png.html

Hier mal eine wenig vom Code:

Java:
{
verticalSplitPane = new JSplitPane();
getContentPane().add(verticalSplitPane, 
	new GridBagConstraints(0, 1, 4, 2, 0.0, 0.0,
	GridBagConstraints.CENTER, 
	GridBagConstraints.BOTH, 
	new Insets(0, 0, 0, 0), 0, 0));
{
	horizontalSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
	verticalSplitPane.add(horizontalSplitPane, JSplitPane.RIGHT);
// setzt fest wo das Splitpane positioniert wird
	verticalSplitPane.setDividerLocation(200);
{
	panel = new JPanel();
	GridBagLayout panelLayout = new GridBagLayout();
	horizontalSplitPane.add(panel, JSplitPane.RIGHT);
	panelLayout.rowWeights = new double[] {0.1, 0.1, 0.0, 0.0};
	panelLayout.rowHeights = new int[] {7, 7, 185, 20};
	panelLayout.columnWeights = new double[] {0.0, 0.1, 0.1, 0.1, 0.1};
	panelLayout.columnWidths = new int[] {76, 7, 7, 7, 20};
	panel.setLayout(panelLayout);
{
	outputScrollPane = new JScrollPane();
	panel.add(outputScrollPane, new GridBagConstraints(
		0, 0, 5, 3, 0.0, 0.0, 
		GridBagConstraints.CENTER,
		GridBagConstraints.BOTH, 
		new Insets(0, 0, 0, 0), 0, 0));
		outputScrollPane.setPreferredSize(
		new java.awt.Dimension(25, 34));
	outputScrollPane.setName("outputScrollPane");
{
	TableModel outputModel = 
		new DefaultTableModel(
		new String[][] { { "One", "Two" }, 
			{ "Three", "Four" } },
			new String[] { "Column 1", "Column 2" });
	output = new JTable();

	outputScrollPane.setViewportView(output);
	output.setModel(outputModel);
}
}


{
	treeScrollPane = new JScrollPane();
	verticalSplitPane.add(treeScrollPane, JSplitPane.LEFT);
{
	dbTree = new JTree();
	treeScrollPane.setViewportView(dbTree);
	dbTree.setPreferredSize(new java.awt.Dimension(100, 72));
	}
}

Hoffe auf eine baldige Antwort.

Mfg burny
 
Hallo burny,

wenn der Benutzer die Größe der Komponenten durch Verschieben des Teilers ändert, wird die Mindestgröße der Komponenten verwendet, um die maximale / minimale Position des Teilers zu bestimmen. Wenn die minimale Größe der beiden Komponenten größer ist als die Größe des Splitpanes, wird der Teiler keine Größenveränderung zulassen. Zum Ändern der Mindestgröße einer JComponent benutzen wir die Methode JComponent.setMinimumSize (java.awt.Dimension).

Mit der resizeWeight Eigenschaft können wir auch noch die Raumverteilung beeinflussen: setResizeWeight

Gruß,
André
 
Zuletzt bearbeitet:
Zum Ändern der Mindestgröße einer JComponent benutzen wir die Methode JComponent.setMinimumSize (java.awt.Dimension).

Mit der resizeWeight Eigenschaft können wir auch noch die Raumverteilung beeinflussen

Dankesehr das war genau das was ich brauchte. Ich hab das gestern in dem How to Use... Tutorial von Oracle gelesen, war mir aber ziemlich unsicher. Vielleicht sollte ich das nächste mal mehr ausprobieren.

Vielen Dank :toll:

burny
 

Zurück
Oben