JTable Header und Border

MiMi

Erfahrenes Mitglied
Hi,

und zwar bin ich gerade zugange ne Jtable zu erstellen. Ich hab es schon geschaft das Grid auszublenden mit
Java:
 table.setShowGrid( false );
. Jetzt wuerd ich jedoch auch gerne das Grid zwischen den Spalten beim header ausblenden.
Das zweite ist, ob man ner bestimmten Zeile nur den unteren Rand der Zellen mit nem Border versehen kann.
Achja und ich moechte gerne neben den nicht editierbaren Zellen auch das man die Spalten nicht wie wild umherschieben kann.

Danke fuer eure Hilfe im vorraus :D

gr MiMi
 
Versuch's mal über TableCellRenderer zu lösen. Das Verschieben der Spalten lässt sich mit JTableHeader#reorderingAllowed steuern.
 
Ok danke fuer deine Hilfe. Das mit dem reordering hat super geklappt :D

Nur wie ich das mit dem CellRendering machen soll versteh ich noch net. :suspekt:
 
Ok ich habs rausgefunden.
Ich ueberschreib einfach die Paint methode und zeichne dann die Linie an den unteren Rand der Zelle.

Danke nochma

Jetzt muesst ihr nur noch den Rand zwischen den Spalten beim Header wegbekommen
 
Hey,

ich würde nicht einfach die Paint-Methode überschreiben.
Du müsstest dir nur eine eigene Border schreiben und diese deinem CellRenderer hinzufügen.

Das gleiche ist bei dem Header. Diesem kannst du einen Renderer setzen. Wenn du deinem Renderer dann eine entsprechende Border setzt, funktioniert es.

Gruß

Sascha
 
Naja ich fand es so ganz gut, weil ich ja in der Paint methode auch den Text schreibe und ihn dort auch beeinflussen kann wegen fettdruck oder ich zeichne ne linie durch damit es durchgestrichen ist. Aber warum wuerdest du die paint net ueberschreiben? Was spricht dagegen?
 
Naja habs jetzt ma umgeschrieben gehabt funkiontiert auch soweit. Problem ist nur das ich jetzt den Text der nicht mehr gueltig ist, net mehr durchstreichen kann (jetzt mach ich ihn italic, aber das ist ja net der sinn der sache ^^)

Java:
		public Component getTableCellRendererComponent( JTable table, Object value,
		                                          boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex ) {
			String text = value.toString();

			setFont( getFont().deriveFont( Font.PLAIN ) );
			setHorizontalAlignment( SwingConstants.LEFT );
			setBorder( null );

			if ( rowIndex == _model.getRowCount() -3 )
			{
				setBorder( BorderFactory.createMatteBorder( 0, 0, 2, 0, Color.black ) );
			}

			if ( rowIndex >= _model.getRowCount() - 3 && vColIndex == _model.getColumnCount()-2 )
			{
				setFont( getFont().deriveFont( Font.BOLD ) );
			}

			if ( rowIndex +1 < _model.getRowCount() )
			{
				if ( reductionLine( rowIndex+1 ) && vColIndex == _model.getColumnCount() -1 )
					setFont( getFont().deriveFont(Font.ITALIC ) );
			}

			if ( vColIndex == 2 )
			{
				setHorizontalAlignment( SwingConstants.CENTER );
			}

			setText( text );
			return this;
		}
 
Zurück