JTable mit JScrollpane

Guten Tag

Ich bin an einer Tabelle dir mir zuviel Platz vertikal reserviert, nach den acht Zeilen sollte eigentlich Schluss sein:

Leider hab ich im Moment kein Ahnung wieso.

Dazu mein Code:


		// Erzeuge Tabelle mit einem TableModel
		jtProduktnamen = new JTable(verwProduktnamen);
		jtProduktnamen.addMouseListener(myMouseListener);

		// Titel fuer beschriftung
		jtProduktnamen.getTableHeader().setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));

		jtProduktnamen.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		col = jtProduktnamen.getColumnModel().getColumn(0);
		col.setPreferredWidth(100);

		col = jtProduktnamen.getColumnModel().getColumn(1);
		col.setPreferredWidth(350);

		// Groesse der Spalten bestimmen
		jtProduktnamen.setRowHeight(30);
		jtProduktnamen.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));

		scpProduktTabelle = new JScrollPane(jtProduktnamen);

	}```

Vielen Dank schonmal für die Hilfe

Könnte auch vom eingesezten LayoutManager abhängen. Welchen hast du denn?

Borderlayout im East bereich

Sieht aber komisch aus. Deine JTable müsste sich dann, wenn nichts weiter modifiziert wurde (Border, oder eingebettetes JPanel) ganz rechts am Rand befinden.
Das Ganze sieht mir aber irgendwie nach “NullLayout” aus.

Das JPanel mit dein Eingaben Links und der Tabelle sind in einem Cardlayout.

Darum ist sie nicht rechts oben, sondern nur innerhalb dieses Panels rechts oben. Das passt so schon…

Nur die höhe find ich unschön, da darunter nun noch ein Bild müsste… Druch das die Tabelle nun so hoch ist, passt dieses nicht mehr in den Bildschirm und es gibt eine ScrollBar rechts.

Dann scheint es mir umso mehr ein Problem bei der richtigen Anwendung von LayoutManagern zu geben.

Naja das ist einwenig die scheisse des Cardlayouts… Es übernimt für alle Inhalte die grösse des Grössten Panels…

Naja muss ich halt schauen wie ich das kleiner kriege, BoxLaouyt for president sag ich da nur

So, ich habe nun eine Lösung gefunden die für mich passt. Ich packe nun die JTable in ein Panel mit BoxLayout und fülle den Platz den ich nicht brauche.


		// Erzeuge Tabelle mit einem TableModel
		jtProduktnamen = new JTable(verwProduktnamen);
		jtProduktnamen.addMouseListener(myMouseListener);

		// Titel fuer beschriftung
		jtProduktnamen.getTableHeader().setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));

		jtProduktnamen.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		col = jtProduktnamen.getColumnModel().getColumn(0);
		col.setPreferredWidth(100);

		col = jtProduktnamen.getColumnModel().getColumn(1);
		col.setPreferredWidth(350);

		// Groesse der Spalten bestimmen
		jtProduktnamen.setRowHeight(30);
		jtProduktnamen.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));

		pnlProduktTabelle = new JPanel();
		pnlProduktTabelle.setLayout(new BoxLayout(pnlProduktTabelle, BoxLayout.PAGE_AXIS));
		
		scpProduktTabelle = new JScrollPane(jtProduktnamen);
		scpProduktTabelle.setPreferredSize(new Dimension(452, 100));
		
		pnlProduktTabelle.add(scpProduktTabelle);
		pnlProduktTabelle.add(Box.createVerticalGlue());

	}```