JTable Zeile makieren

Hallo,

ich hab ein Problem mit einer JTable.
Ich möchte, dass wenn der User auf eine Zelle in meiner Tabelle (4 Spalten und beliebig viele Zeilen) klickt, automatisch die Zeile makiert wird, in der sich die Zelle befindet. Außerdem soll der User den Zelleninhalt nicht verändern dürfen. Ich hab schon ein bisschen was mit:
Java:
table.setRowSelectionAllowed(true);
table.setCellSelectionEnabled(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
probiert, aber irgendwie haut des net ganz so hin wie ich will ^^
Ist es ggf. auch möglich mehrere Zeilen untereinander zu makieren?

Hoffe ihr könnt mir bei meinem Problem helfen

Danke

Gruß
Java_Anfänger
 
Oh man, bin ich dumm:)

Ich kann die Zeilen schon längst makieren, habe es blos nie gesehen,
da ich nämlich eine Hintergrundfarbe gesetzt habe.

Jetzt ergibts sich daraus natürlich ein neues Problem:
Ich kann zwar die Zeilen makieren, sehe doch nur meine Hintergrundfarbe, dich ich bei den Zellen gesetzt habe. Ich habe auch mithilfe von table.setSelectionBackground(selectionBackground) versucht die Hintergrundfarbe des ausgewählten Bereichs zu ändern, bisher aber leider ohne Erfolg...

Habt ihr vielleicht ne Idee was ich da machen kann?

Grüße
Java Anfänger
 
Guck dir doch mal den CellRenderer an! Damit hatte ich in meinem Projekt die ganzen Hintergrundfarben für Zellen, Reihen, Spalten, Markierungen usw Festgelegt.
 
So jetzt hab ich es endlich gelöst :)

Danke Matze für den Tipp, mit den CellRenderer hat es wunderbar geklappt!

mit:
Java:
table.setDefaultRenderer( Object.class, new TMR_fehlValues());
habe ich den CellRenderer der Tabelle hinzugefügt.

und das ist mein CellRenderer
Java:
class CellRenderer_table extends DefaultTableCellRenderer
{ 
   public Component getTableCellRendererComponent(JTable table, Object value, 
         boolean isSelected, boolean hasFocus, int row, int column) 
   { 
      super.getTableCellRendererComponent(table, value, isSelected, 
            hasFocus, row, column); 

	  this.setFont(new Font(this.getFont().getFamily(),Font.BOLD, this.getFont().getSize()));
	  this.setForeground(Color.black);
	  
	  if(isSelected)
      {
    	  setBackground(new Color(151,203,255));
      }
      else
      {
		  for(int i = 0; i < table.getRowCount(); i++)
		  {
			  if(table.getValueAt(i, 0) != null)
			  {
				  if(row == i)
				  {
					  this.setBackground(new Color(250,203,107));
				  }
			  }
			  if(table.getValueAt(i, 1) != null)
			  {
				  if(row == i)
				  {
					  this.setBackground(new Color(208,252,205));
				  }
			  }
		  }
      }
      return this; 
   } 
}

Nochmals Vielen Dank :)

Grüße
Java_Anfänger
 
Zurück