gleicher TableCellRenderer für mehrere unterschiedliche Tabellen

Maddili

Mitglied
Hallo,

Ich habe eine TableCellRenderer implementiert undmöchte diesen für verschiedene Tabellen nutzen.

hier mein Renderer:

Java:
public class MyTableCellRenderer extends DefaultTableCellRenderer {

	public Component getTableCellRendererComponent (JTable table,
			Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
			      Component cell = super.getTableCellRendererComponent(
			                         table, obj, isSelected, hasFocus, row, column);


			   	  /*
		    	   * new Color(R,G,B,alpha);
		    	   */
			      int alpha=70;
			      if(column < 14){
			    	  cell.setBackground(new Color(143,188,143, alpha));
			      }else if(column < 26){
			    	  cell.setBackground(new Color(30,144,255, alpha));
			      }else if(column < 38){
			    	  cell.setBackground(new Color(255,250,205, alpha));
			      }else if(column <50){
			    	  cell.setBackground(new Color(155, 48, 255, alpha));
			      }else if(column < 62){
			    	  cell.setBackground(new Color(210,180,140, alpha));
			      }

             return cell;
    }

Der CellRenderer wird folgendermaßen gesetzt:

Java:
		TableColumn col;
		col = tableView.getColumnModel().getColumn(0);
		col.setCellRenderer(new MyTableCellRenderer());
// usw. für alle weiteren Columns

Jetzt ist es aber so, dass Column(0) in ALLEN Tabellen gefärbt wird.
Kann ich eine Bedingung schaffen, um abzufragen WELCHE Tabelle WAS machen soll?

table.getName().. usw. usw. habe ich bereits versucht, aber Klappt nicht.

Schönen Freitag,
Martin
 
S

SlaterB

Gast
> aber Klappt nicht.

inwiefern klappt das nicht, was ist denn dein Plan dazu,
nur etwas zu versuchen ohne Ziel, da könntest du auch gleich this.toString() verwenden..
haben die Tabellen vorher ein Name-Attribut gesetzt bekommen?

eine Alternative wäre, dass der Renderer einen Link auf die GUI kennt und so
if (table == gui.getTableXY())
vergleicht,
oder du verwendest doch mehrere unterschiedliche Renderer und gibts im Konstruktor die benötigte Konfiguration (Farbe usw.) an
 

Maddili

Mitglied
Hi, danke dieses Problem hat sich erledigt.

ABER ich habe natürlich etwas neues für Euch:

Habe eine "FixedColumntable" erstellt. Auf dieser Tabelle rennt mein TableCellRenderer. Funktioniert jetzt auch super.

Nun habe ich mir noch eine Klasse borderCellRenderer zusammengegoogelt, um einzelne Zellen (oder auch Columns) mit einem dickeren Rand auszustatten.
Aber ich verstehe nicht ganz, WO und WIE ich diese Klasse implementieren kann.

Im Table-Model? Im Cell Renderer???

Sorry, aber ich verstehs nicht ganz.

hier der Code des BorderCellRenderers:

Java:
class MyBorderCellRenderer extends JLabel implements TableCellRenderer {
	  protected Border noFocusBorder;

	  protected Border columnBorder;

	  public MyBorderCellRenderer() {
	    noFocusBorder = new EmptyBorder(1, 2, 1, 2);
	    setOpaque(true);
	  }

	  public Component getTableCellRendererComponent(JTable table, Object value,
	      boolean isSelected, boolean hasFocus, int row, int column) {
	    if (isSelected) {
	      setForeground(table.getSelectionForeground());
	      setBackground(table.getSelectionBackground());
	    } else {
	      setForeground(table.getForeground());
	      setBackground(table.getBackground());
	    }
	    setFont(table.getFont());

	    if (hasFocus) {
	      setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
	      if (table.isCellEditable(row, column)) {
	        setForeground(UIManager.getColor("Table.focusCellForeground"));
	        setBackground(UIManager.getColor("Table.focusCellBackground"));
	      }
	    } else {
	      if (value instanceof CellBorder) {
	        Border border = ((CellBorder) value).getBorder();
	        setBorder(border);
	      } else {
	        if (columnBorder != null) {
	          setBorder(columnBorder);
	        } else {
	          setBorder(noFocusBorder);
	        }
	      }
	    }
	    setText((value == null) ? "" : value.toString());
	    return this;
	  }

	  public void setColumnBorder(Border border) {
	    columnBorder = border;
	  }

	  public Border getColumnBorder() {
	    return columnBorder;
	  }
	}

	interface CellBorder {
	  public Border getBorder();
	  public Border getBorder(int row, int column);
	  public void setBorder(Border border);
	  public void setBorder(Border border, int row, int column);
	}
 
S

SlaterB

Gast
der gepostete Code IST ein Renderer, muss so verwendet werden, wie man eben TableCellRenderer verwendet,

wenn du schon einen TableCellRenderer hast, dann musst du tatsächlich die beiden getTableCellRendererComponent()-Methoden verwurschteln
 

Maddili

Mitglied
[...] dann musst du tatsächlich die beiden getTableCellRendererComponent()-Methoden verwurschteln

Kannst du mir vielleicht das "verwurschteln" entwurschteln? Was meinst du damit?

Der Code für den Cellrenderer ist ja relativ einfach gehalten:

Java:
public class MyTableCellRenderer extends DefaultTableCellRenderer {
 
    public Component getTableCellRendererComponent (JTable table,
            Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
                  Component cell = super.getTableCellRendererComponent(
                                     table, obj, isSelected, hasFocus, row, column);
 
 
                  
                  if(column < XYZ){
                      // tu irgendwas!
                  } 
             return cell;
    }

grüße,
Martin
 
S

SlaterB

Gast
in diese Methode, die in deinem Programm anscheinend aktiv ist, kopierst du nun den Code vom anderen Renderer, den du brauchst, z.B. beginnend mit einer Zeile
> setBorder(noFocusBorder);
wobei es in MyTableCellRenderer cell.setBorder(noFocusBorder); heißen muss, denn am Ende wird ja cell zurückgegeben, nicht this

dann wird gemeckert dass es noFocusBorder nicht gibt, also sorgst du dafür dass es da ist,
dann ganze if/else-Konstrukte einbauen usw., ganz normal programmieren

wenn du willst kannst du auch Vererbung einsetzen mit super.getTableCellRendererComponent()

zu beachten ist, dass MyBorderCellRenderer von JLabel ausgeht während cell in MyTableCellRenderer nur Component ist,
evtl. muss man das auf JLabel casten,
und wenn cell gar kein JLabel ist, dann wirds mal kompliziert

naja, alles ganz normale Dinge
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
D 3D-Grafik Erstellen vieler gleicher Würfel AWT, Swing, JavaFX & SWT 5
H LayoutManager Auf gleicher Höhe anordnen AWT, Swing, JavaFX & SWT 4
K JLayeredPane Elemente auf gleicher Position AWT, Swing, JavaFX & SWT 7
F BoxLayout mit gleicher größe AWT, Swing, JavaFX & SWT 2
P GridBagLayout - zwei Spalten mit gleicher Größe AWT, Swing, JavaFX & SWT 11
M SWT SWT - Zwei Tabellen gleicher Größe AWT, Swing, JavaFX & SWT 5
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
V JComboBox gleicher Inhalt bedeutet gleicher Index? AWT, Swing, JavaFX & SWT 7
O Buttons gleich groß + gleicher Abstand AWT, Swing, JavaFX & SWT 3
S Unterschiedliche Optik trotz gleicher Look and Feel Code? AWT, Swing, JavaFX & SWT 11
B TableCellRenderer rendert Integer/Boolean Felder nicht AWT, Swing, JavaFX & SWT 4
M Swing TableCellRenderer elegant anpassen AWT, Swing, JavaFX & SWT 3
D Swing Mit TableCellRenderer einzelne Zellen markieren AWT, Swing, JavaFX & SWT 3
O Swing TableCellRenderer und JComboBox AWT, Swing, JavaFX & SWT 4
C Swing TableCellRenderer: setText() vs. setIcon() AWT, Swing, JavaFX & SWT 5
E Swing TableCellRenderer für alle Splaten setzen?! AWT, Swing, JavaFX & SWT 3
A Swing TableCellRenderer ändert die Zeilenfarbe zu spät AWT, Swing, JavaFX & SWT 3
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
J NullPointerException bei Benutzung vom TableCellRenderer AWT, Swing, JavaFX & SWT 3
U TableCellRenderer: Problem mit Timestamp/Date AWT, Swing, JavaFX & SWT 2
U TableCellRenderer UND prepareRenderer AWT, Swing, JavaFX & SWT 12
C Swing TableCellRenderer AWT, Swing, JavaFX & SWT 10
U TableCellRenderer und setBackground AWT, Swing, JavaFX & SWT 20
H Swing TableCellRenderer für verschiedene Spalten AWT, Swing, JavaFX & SWT 11
C Swing Problem mit TableCellRenderer in Verbindung mit TableRowSorter AWT, Swing, JavaFX & SWT 2
R JTable - TableCellRenderer AWT, Swing, JavaFX & SWT 3
R JTable - TableCellRenderer - BufferedImage AWT, Swing, JavaFX & SWT 9
S TableCellRenderer: JLabel-Background in JPanel AWT, Swing, JavaFX & SWT 7
R JTable mit TableCellRenderer AWT, Swing, JavaFX & SWT 10
R JTable - TableCellRenderer AWT, Swing, JavaFX & SWT 2
D TableCellRenderer rendert einfach nicht! AWT, Swing, JavaFX & SWT 4
S TableCellRenderer setForeground AWT, Swing, JavaFX & SWT 5
I Problem mit TableCellRenderer AWT, Swing, JavaFX & SWT 3
K TableCellRenderer Problem AWT, Swing, JavaFX & SWT 3
F TableCellRenderer wie umsetzen? AWT, Swing, JavaFX & SWT 2
D JTable TableCellRenderer AWT, Swing, JavaFX & SWT 2
J JTable und TableCellRenderer AWT, Swing, JavaFX & SWT 2
G TableCellRenderer Background variiert darstellen AWT, Swing, JavaFX & SWT 3
P TableCellRenderer mit einem TableRowSorter AWT, Swing, JavaFX & SWT 4
D TableCellRenderer PRoblem AWT, Swing, JavaFX & SWT 3
G TableCellRenderer soll ganze ausgewählte Zeile markieren AWT, Swing, JavaFX & SWT 2
S TableCellRenderer deaktivieren AWT, Swing, JavaFX & SWT 13
J TableCellRenderer AWT, Swing, JavaFX & SWT 5
S JTree mal anders (TableCellRenderer) AWT, Swing, JavaFX & SWT 6
S TableCellRenderer, Performance AWT, Swing, JavaFX & SWT 9
M Objekt in TableCellRenderer packen, warum ein Fehler? AWT, Swing, JavaFX & SWT 2
T TableCellRenderer Problem AWT, Swing, JavaFX & SWT 6
B TableCellRenderer + JComboBoxen AWT, Swing, JavaFX & SWT 2
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ein Patten für das Gluon Mobile Framework AWT, Swing, JavaFX & SWT 7
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
Soloeco JavaFX Dreifachklick für MenuButton erforderlich AWT, Swing, JavaFX & SWT 2
L JavaFX Lösungsvorschläge für dieses coole Control AWT, Swing, JavaFX & SWT 8
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
W JavaFX (j)Unittests für GUI AWT, Swing, JavaFX & SWT 0
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
SchmidiMC Swing Vorschläge für ein Design AWT, Swing, JavaFX & SWT 5
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
L DragDropped für jede Node AWT, Swing, JavaFX & SWT 0
temi JavaFX Lösungsansatz für Umsetzung gesucht AWT, Swing, JavaFX & SWT 4
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben