Hallo,
ich habe Probleme bei der Darstellung einer Tabelle.
In einer seperaten Tabelle sind Daten hinterlegt die auch Länder beinhalten.
Über eine Suchfunktion kann ich Länder auswählen und die Einträge zu dem
jeweiligen Land werden in der Tabelle angezeigt, dabei wird zuerst das Land
und dann die Daten eingetragen.
Nun möchte ich dass die komplette Zeile wo das Land drinsteht eingefärbt wird,
dies soll über einen DefaultTableCellRenderer gemacht werden.
Mit einer for-Schleife in einer anderen Klasse werden die zu ermittelnden Einträge gesucht,
ist das zu suchende Land gefunden, wird der Index in einer Variablen gespeichert.
Als Beispiel habe ich 4 Länder ausgewählt (Bild01).
In dem Renderer soll dann die Zahl in der Variablen mit der Zeile Tabelle verglichen werden,
stimmen die beiden Werte, dann soll die Zeile mit dem Land gefärbt werden, der Index für das
Land wird in der Konsole ausgegeben.
Renderer Code:
Im unterstrichelten Bereich habe ich schon mal was probiert und das geht auch,
allerdings nur wenn ich in der if-Anweisung den Index direkt angebe (Bilder 02-05).
Wird die Zeile der Tabelle mit dem Index-Wert aus der Variablen veglichen, dann
klappt es nicht und es wird nur die Zeile gefärbt mit dem letzten Index-Wert (Bilder 06-09).
Ich hoffe mir kann jemand weiterhelfen.
ich habe Probleme bei der Darstellung einer Tabelle.
In einer seperaten Tabelle sind Daten hinterlegt die auch Länder beinhalten.
Über eine Suchfunktion kann ich Länder auswählen und die Einträge zu dem
jeweiligen Land werden in der Tabelle angezeigt, dabei wird zuerst das Land
und dann die Daten eingetragen.
Nun möchte ich dass die komplette Zeile wo das Land drinsteht eingefärbt wird,
dies soll über einen DefaultTableCellRenderer gemacht werden.
Mit einer for-Schleife in einer anderen Klasse werden die zu ermittelnden Einträge gesucht,
ist das zu suchende Land gefunden, wird der Index in einer Variablen gespeichert.
Als Beispiel habe ich 4 Länder ausgewählt (Bild01).
In dem Renderer soll dann die Zahl in der Variablen mit der Zeile Tabelle verglichen werden,
stimmen die beiden Werte, dann soll die Zeile mit dem Land gefärbt werden, der Index für das
Land wird in der Konsole ausgegeben.
Renderer Code:
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.io.*;
import java.util.*;
public class SuchenTableCellRenderer extends DefaultTableCellRenderer {
private Color lightBlue = new Color(210,210,240);
private Color normalBlue = new Color(140,140,215);
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//Einrücken
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Border defaultBorder = ((JComponent)comp).getBorder();
defaultBorder = BorderFactory.createEmptyBorder(0,3,0,0);
this.setBorder(defaultBorder);
//setFont(new Font("Arial", Font.BOLD, 14));
if(row%2 == 0) {
this.setBackground(Color.white);
} else {
this.setBackground(lightBlue);
}
//----------------------------------------------------------------------------------------
if(SuchenEintrag.tree_wert.equals("Land") & row == 0) {
this.setBackground(Color.yellow);
} else if(SuchenEintrag.tree_wert.equals("Land") & row > 1) {
if(row == Suchen.index_land) {
this.setBackground(Color.yellow);
}
/*if(row == 11) {
this.setBackground(Color.yellow);
}
if(row == 44) {
this.setBackground(Color.yellow);
}
if(row == 62) {
this.setBackground(Color.yellow);
} */
}
//----------------------------------------------------------------------------------------
if(isSelected) {
//63,53,255
this.setBackground(new Color(0,120,215));
this.setForeground(Color.white);
} else {
this.setForeground(Color.black);
}
setValue(value.toString());
return this;
}
}
allerdings nur wenn ich in der if-Anweisung den Index direkt angebe (Bilder 02-05).
Wird die Zeile der Tabelle mit dem Index-Wert aus der Variablen veglichen, dann
klappt es nicht und es wird nur die Zeile gefärbt mit dem letzten Index-Wert (Bilder 06-09).
Ich hoffe mir kann jemand weiterhelfen.
Zuletzt bearbeitet von einem Moderator: