JTable Inhalt zentrieren

wSam

Erfahrenes Mitglied
Hallo zusammen

Ich habe zwei Fragen betreffend JTable.

1. Wie kann ich den Inhalt einer JTable zentrieren? Horizontal ist er schon mittig, nur vertikal nicht.

2. Wie kann ich einzelne Linien in der Tabelle dicker machen als die anderen?

Vielen Dank im Voraus und Gruss
 
Zuletzt bearbeitet:
>Ich habe zwei Fragen betreffend JTable.
>1. Wie kann ich den Inhalt einer JTable zentrieren? Horizontal ist er schon mittig, nur vertikal nicht.

Wie zentrierst Du denn horizontal?
--> setVerticalAlignment(...)

>2. Wie kann ich einzelne Linien in der Tabelle dicker machen als die anderen?

Alles immer schön über den Renderer. :)
 
Horizontal ist schon automatisch zentriert.

Und die Methode
--> setVerticalAlignment(...)
gibt es für JTable gar nicht. Und mit setAlignementX(center) / setAlignementY(center) geschieht genau gar nichts.

Noch jemand einen konkreteren Vorschlag oder Tipp?
 
>Und die Methode setVerticalAlignment(...) gibt es für JTable gar nicht.

Habe ich auch nicht behauptet. Da alles, was dargestellt werden soll, immer im Renderer geschieht, bezog ich mich darauf. Der DefaultCellRenderer einer Tabelle ist ein JLabel, und da gibt es diese Methode.
 
Aha dann werde ich mich mal schlau machen was den Renderer betrifft. Danke.
 
Zuletzt bearbeitet:
Jetzt habe ich doch noch zwei Fragen:

1. Ich möchte gerne, dass es mir diejenige Spalte hervorhebt (farblich), in welcher ich gerade ein Feld bearbeite. Die Zeile wird automatisch eingefärbt. Wie kann ich dies auch auf die Spalte anwenden? Sodass wie ein Kreuz entsteht?

Ich habe jetzt fangs die Farben ändern können:

Code:
public Component getTableCellRendererComponent(JTable table, Object value,
	      boolean isSelected, boolean hasFocus, int row, int column) 
	{
	   super.getTableCellRendererComponent(table, value, isSelected,
	         hasFocus, row, column);
	   
	   setVerticalAlignment(JLabel.CENTER);
	   setHorizontalAlignment(JLabel.CENTER);
	   setForeground(Color.BLUE);
	   
	   if(hasFocus)
	       setBackground(Color.WHITE);
	   else if( isSelected )
		   setBackground(Color.LIGHT_GRAY);
	   else
		   setBackground(Color.WHITE);

	   
	   return this;
	}

2. Hmm und wie könnte ich jetzt einzelne Linien der Tabelle dicker machen?

Fragen über Fragen.

Danke im Voraus
 
>1. Ich möchte gerne, dass es mir diejenige Spalte hervorhebt (farblich), in welcher ich gerade ein Feld bearbeite. Die Zeile wird automatisch eingefärbt. Wie kann ich dies auch auf die Spalte anwenden? Sodass wie ein Kreuz entsteht?


In diesem Fall ist nicht der CellRenderer, sondern der CellEditor relevant.
Deine Renderer-Anpassung bewirkt also beim Bearbeiten nichts.


>2. Hmm und wie könnte ich jetzt einzelne Linien der Tabelle dicker machen?


Entweder malen oder schauen, ob es für Deinen Renderer nicht etwas wie setBorder(...) gibt.
 
Zurück