Zelle von JTable mit Rahmen versehen

Michae

Mitglied
Hallo Zusammen,

folgendes Szenario

ich habe eine JTable mit geschätzen 40 Spalten.
Meine Frage an der stelle lautet... ist es möglich nach jeder 5. Spalte eine horizontale Linie zu ziehen
wenn ja wie?
Wie ich die Spalte feststelle ist unrelevant, dieses Problem ist bereits gelöst.
 
Erstmal kurz nachgefragt: Meinst du wirklich eine horizontale Linie (also unter der Spalte) oder eine vertikale Linie (rechts der Spalte)?

Beides kann man realisieren, indem man den TableCellRenderer überschreibt und an der entsprechenden Stelle die Linie zeichnen lässt.
 
Zuletzt bearbeitet:
oke es soll nun wie folgt aussehen:

||Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 | Spalte 5 ||
||Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 | Spalte 5 ||
||Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 | Spalte 5 ||

der Doppelte Strich soll nun symbolisch dafür dastehen dass hier nun eine sichtbare schwarze linie auftaucht.

Beim TableCellRenderer bin ich auch allerdings fehlt mir hier der ansatz.

Vielen Dank soweit.
 
Hier symbolisch für den rechten Rand der betreffenden Zelle:

Java:
// Schwarze Farbe erzeugen
Color color = new Color(0, 0, 0);
// Dann einen Rand erzeugen
MatteBorder border = new MatteBorder(0, 0, 2, 0, color);
// Und den dann setzen
table.setBorder(border);

Werte für MatteBorder sind: links, unten, rechts, oben.
Für links muss es dann halt 2, 0, 0, 0 heißen.

Andernfalls sieh dir mal das hier an, dort steht gut beschrieben, wie man den Renderer überschreibt.
 
Zuletzt bearbeitet:
Hallo,

vielen dank soweit,
habe jetzt einen TableCellRenderer gechrieben:
Java:
package de.emano.audi.bicos.client.panels.arbeitslistemodellmgv;

import java.awt.Color;
import java.awt.Component;

import javax.swing.JTable;
import javax.swing.border.MatteBorder;
import javax.swing.table.DefaultTableCellRenderer;

/**
 * 
 * @author MH
 * 
 */
public class CellRenderer extends DefaultTableCellRenderer {

	private static final long serialVersionUID = -1195682136616306875L;

	
	Color color = new Color(0, 0, 0);
	MatteBorder border = new MatteBorder(0, 0, 2, 0, color);
	
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		Component lCell = super.getTableCellRendererComponent(table, value,
				isSelected, hasFocus, row, column);


				// Dann einen Rand erzeugen
				
				// Und den dann setzen
				table.setBorder(border);
		return lCell;
	}
}
Habe den Natürlich auch in der Controll Klasse übergeben, allerdings passiert in der Tabelle selbst nichts.

Java:
lMainTable.setDefaultCellRenderer(new CellRenderer());
 

Neue Themen


Zurück
Oben