JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern

DonMessi

Neues Mitglied
Hallo,

im Anhang findet ihr ein Bild mit einem Frame. In diesem Frame sind 5 Tabellen enthalten. Diese sind sehr unübersichtlich dargestellt, weil sie direkt untereinander bzw. nebeneinder stehen.
Ich möchte um den Überblick zu verschaffen einen bestimmten (z.B. 0,5 cm) zwischen den Tabellen herstellen. Auch möchte ich gerne über jeder Tabelle eine individuelle Überschrift setzen.
Im Forum und auch in Google werden Tabellen-Überschriften teilweise als Spalten-Bezeichnungen interpretiert. Ich möcht oberhalb der Spalten eine Überschrift haben.
Die Zeilenhintergründe durch eine bestimmte Farbe zu ändern ist kein Problem. Wie kann ich aber auch die Hingergründe der Spalten-Bezeichnungen ändern. In meinem Beispiel wird eine Spalte als "Background : RED" bezeichnet. Der Hintergrund dieser Spalte soll also rot sein!

Im Anhang habe ich auch noch mal diese Stellen mit einem Text versehen. Mir würde auch ein Beispiel-Code zu den oben aufgeführen Problemen reichen. Für jede hilfe bin ich sehr dankbar.

Hier mein Code:
Java:
	DefaultTableModel tableModel1;
	DefaultTableModel tableModel2;
	DefaultTableModel tableModel3;
	DefaultTableModel tableModel4;
	DefaultTableModel tableModel5;
	JTable table1;
	JTable table2;
	JTable table3;
	JTable table4;
	JTable table5;
	JFrame frameTable = new JFrame("Test");
	JPanel panel = new JPanel(new GridLayout(2,2));
	
	String column1ForTable1 = "Backround: Red";
	String column2ForTable1 = "Backround: Red";
	String column1ForTable2 = "Backround: Green";
	String column2ForTable2 = "Backround: Green";
	String columnForTable3 = "Backround: Orange";
	String columnForTable4 = "Backround: Blue";
	String columnForTable5 = "Backround: Yellow";

	public void test()
	{
		String[] columnsTable1 = {column1ForTable1, column2ForTable1};
		String[] columnsTable2 = {column1ForTable2, column2ForTable2};
		String[] columnTable3 = {columnForTable3};
		String[] columnTable4 = {columnForTable4};
		String[] columnTable5 = {columnForTable5};
		String[][] rowsTable1 = {{"USA", "Schweiz"}};
		String[][] rowsTable2 = {{"EU", "GB"}};
		String[][] rowsTable3 = {{"EU"}};
		String[][] rowsTable4 = {{"EU"}};
		String[][] rowsTable5 = {{"EU"}};
		
		tableModel1 = new DefaultTableModel(rowsTable1, columnsTable1);
		tableModel2 = new DefaultTableModel(rowsTable2, columnsTable2);
		tableModel3 = new DefaultTableModel(rowsTable3, columnTable3);
		tableModel4 = new DefaultTableModel(rowsTable4, columnTable4);
		tableModel5 = new DefaultTableModel(rowsTable5, columnTable5);
		
		table1 = new JTable(tableModel1);
		table1.setBackground(Color.RED);
		table2 = new JTable(tableModel2);
		table2.setBackground(Color.GREEN);
		table3 = new JTable(tableModel3);
		table4 = new JTable(tableModel4);
		table5 = new JTable(tableModel5);
		
		JScrollPane scroll1 = new JScrollPane(table1);
		JScrollPane scroll2 = new JScrollPane(table2);
		JScrollPane scroll3 = new JScrollPane(table3);
		JScrollPane scroll4 = new JScrollPane(table4);
		JScrollPane scroll5 = new JScrollPane(table5);
		panel.add(scroll1);
		panel.add(scroll2);
		panel.add(scroll3);
		panel.add(scroll4);
		panel.add(scroll5);
		
		frameTable.setSize(1000, 700);
		frameTable.getContentPane().add(panel);
		frameTable.setVisible(true);
	}
 

Anhänge

  • Darstellungen.jpg
    Darstellungen.jpg
    49,7 KB · Aufrufe: 47
Java:
 JPanel panel = new JPanel(new GridLayout(2,0,kleinerAbstand, kleinerAbstand));

....
 
JScrollPane scroll1 = new JScrollPane(table1);
// panel.add(scroll1); weg
JPanel temp1 = new JPanel(new BorderLayout());
temp1.add(new JLabel("Tabelle 1"), BorderLayout.NORTH);
temp1.add(scroll1, BorderLayout.CENTER);
panel.add(temp1);
,,,

Tabellenheader einfärben: Frickelig, mit eigenem Renderer für den TableHeader...
 
für Farbe im Header siehe den unteren der beiden Links, falls du noch mehr suchst findest du es vielleicht im ganzen Tutorial
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/4841-jtable-ubersicht-teil-1-teil-8-a.html
http://www.java-forum.org/java-faq-...tableheader-tablecolumn-tablecolumnmodel.html

GridLayout im Panel sorgt dafür dass alle Zeillen gleich groß sind,
und da du das Panel im JFrame mit BorderLayout einfügst, wird dieses maximiert,

entweder musst du das Frame kleiner machen, vielleicht 1000x200 statt 1000x700,
oder am Layout was ändern, aber das ist sicherlich deine Frage..

jetzt irgendeine Konfiguration vorgeben möchte ich nicht, zuviel der Mühe und reicht dann letztlich doch nicht bei weiteren Änderungen,
das Thema Layout muss man wirklich mal paar Tage selber durcharbeiten,
hast du alle Layouts von
Lesson: Laying Out Components Within a Container (The Java™ Tutorials > Creating a GUI With JFC/Swing)
ansgeschaut und ausprobiert?
ändere das vom Panel und auch vom JFrame
 

Zurück
Oben