So ändern Sie die Farbe einer JTable ganze Zeile mit einer bestimmten Spalte Wert
Ich habe eine Jtable, die bekommt aus einem array gefüllt mit Werten.
Mein code ist wie folgt:
private static final String[] columnNames = {"Line Number", "Error","Fix Proposed","Percentage (%)"};
static DefaultTableModel model = new DefaultTableModel(null,columnNames);
public static void DisplayMyJList(List<CaptureErrors> x,String extension,
ArrayList<Integer> l,ArrayList<Integer> p,
ArrayList<String> e,ArrayList<String> s) throws IOException {//Method to Dynamic get values to be populated in Jtable.
String theExtension = extension;
if(FILE_EXTENSION.equals("java")) {
for(CaptureErrors ex: x) {
Vector row = new Vector();
row.add(ex.getLinenumber());
row.add(ex.getMyfounderror());
row.add(ex.getMycorrection());
row.add(ex.getMyPercentage()+"%");
model.addRow( row );
//model.setRowColour(1, Color.YELLOW);
}
}
table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setFillsViewportHeight(true);
table.setShowGrid(true);
table.setShowVerticalLines(true);
table.setGridColor(new Color(0,128,0));
JTableHeader header = table.getTableHeader();
table.setBackground(new Color(255,228,225));
table.setEnabled(true);
header.setFont(new Font("Dialog", Font.CENTER_BASELINE, 12));
header.setBackground(Color.black);
header.setForeground(Color.yellow);
JScrollPane pane4 = new JScrollPane(table);
Kann ich füllen der Jtable, die in einem array von Werten Mit einem JButton. Möchte ich eine Bedingung haben, wo, wenn Spalte "Anteil" ,bekommen alle Werte in dieser Spalte >30, unterstreicht die Zeilen in Farbe.red.
Ich nicht wollen, um Benutzer TableCellRendererComponent .Ich möchte diese Aktion mit Klick auf den Jbutton.
Den tatsächlichen Jtable sieht wie folgt aus:
Dann nach, was ich will zu bekommen, die ersten 2 Zeilen werden in rot hervorgehoben. Jede Hilfe zu schätzen.
Ihre Tabelle ist die Behandlung aller Daten wie ein string. Sollten Sie wirklich überschreiben werden die
getColumnClass()
Methode zum zurückgeben der richtigen Klasse, so kann jede Spalte korrekt formatiert sein.
InformationsquelleAutor Ms_Joe | 2013-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eines der Probleme, die mit der render API ist, dass es schwierig zu erbringen compound-Renderer. Es gibt Möglichkeiten, das zu tun, versteh mich nicht falsch, aber es wäre schön gewesen, haben es gebaut...[end rant]...
Die grundlegende Idee ist, dass Sie Sie wollen, eine Reihe von Renderern, die sich von einem Basis-renderer enthält die Logik, die erforderlich, um zu bestimmen, was es tun sollte, Sie unter den erforderlichen Bedingungen.
Müssen Sie eine benutzerdefinierte renderer für jede Spalte (von Ihnen, Beispiel, 4) und gelten jeweils für die Spalte der Tabelle
Oder Sie konnte einfach SwingLabs
JXTable
hat eingebaute Unterstützung für Zeile TextmarkerInformationsquelleAutor MadProgrammer
Siehe den Ansatz in Tabelle-Zeile-Rendering für eine Lösung ohne das erstellen von benutzerdefinierten Renderer.
Können Sie auch prüfen wollen, Tabelle Format Renderer so können Sie das format der Prozentsatz Spalte leicht.
InformationsquelleAutor camickr
Können Sie erstellen ein benutzerdefinierter Zellen-renderer. In der Umsetzung prüfen, ob der prozentuale Wert ist > 30 für eine gegebene Zeile, dann markieren Sie diese Zelle.
Beispiel:
Können Sie aktivieren/deaktivieren diese rendering-Logik, das auf action, wenn nötig.
Sehen Mit Custom Renderer für mehr details.
InformationsquelleAutor tenorsax