2016-07-27 9 views
0

Ich habe eine JPanel wie untenändern JTable gesamte Zeilenfarbe während Zeilen aus MySQL Hinzufügen

enter image description here

Die Daten in der Transaktionstabelle (rechts) von einem MySQL resultset erzeugt wird, wenn der Benutzer wählt eine Zeile in die Plot-Tabelle (LINKS). Code unten:

 tableModelTran.getDataVector().removeAllElements(); 
     if (rs.isBeforeFirst()) { 
      while (rs.next()) { 
       java.util.Vector data = new java.util.Vector(); 
       data.add(rs.getString(1)); 
       data.add(rs.getString(2)); 
       data.add(new java.text.SimpleDateFormat("dd/MM/yyyy").format(rs.getDate(3))); 
       data.add(String.valueOf(new java.text.SimpleDateFormat("MMMM yyyy").format(rs.getDate(3))).toUpperCase()); 
       data.add(rs.getString(4)); 
       data.add(rs.getString(5)); 
       data.add(rs.getString(6)); 
       data.add(rs.getBoolean(7)); 
       tableModelTran.addRow(data); 
      } 

      performTotals(); 
     } 

Ich möchte die Farbe der Zeilen GRÜN ändern, wenn die ‚Verifiziert‘ Spalte markiert ist und verlassen ungefärbt, wenn dies nicht der Fall. Wenn der Benutzer den Wert der Spalte ändert, sollte die Farbe entsprechend aktualisiert werden. Jede und jede Hilfe wird geschätzt.

EDIT:

ich eine Klasse erstellt und hinzugefügt, um es, wie unten zu meinem Konstruktor:

static class ColorRenderer extends javax.swing.table.DefaultTableCellRenderer { 

    @Override 
    public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
     java.awt.Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

     if (value.equals(true)) { 
      c.setBackground(java.awt.Color.GREEN); 
     } 

     return c; 
    } 


public PlotDetailsWindow() { 
    initComponents(); 
    .... 
    .... 
    transactionTable.setDefaultRenderer(Boolean.class, new ColorRenderer()); 
    .... 
    .... 
} 

Nun, wenn ich auf der linken Seite eine Zeile aus der Tabelle auswählen klicken, wenn der erste Wert falsch ist Es wird die Farbe nicht ändern, aber wenn es wahr ist, wird nur die Spalte 'Verified' in grün geändert, und dann ist es egal, ob der Wert wahr oder falsch ist, es wird immer grün sein. Außerdem wurden die Kontrollkästchen jetzt auf "Wahr/Falsch" gesetzt.

enter image description here

Antwort

3

Ich möchte die Farbe der Zeilen GRÜN ändern, wenn die 'Verifiziert' Spalte markiert ist

Check out Table Row Rendering.

Es zeigt, wie die Methode prepareRenderer(...) von JTable überschrieben werden kann, um eine ganze Zeile basierend auf den Daten in der Zeile zu färben.

Die Grundstruktur für diese Methode überschrieben würde wie folgt aussehen:

JTable table = new JTable(...) 
{ 
    public Component prepareRenderer(
     TableCellRenderer renderer, int row, int column) 
    { 
     Component c = super.prepareRenderer(renderer, row, column); 

     // add custom rendering here 

     return c; 
    } 
}; 
+0

und wie füge ich dieses Stück in Netbeans zu meinem Tisch von Code? – HMH

+2

@HMH, ich habe noch nie eine IDE benutzt, also kann ich dir nicht sagen, wie das geht. Ihnen wurden Arbeitsbeispiele gegeben, die Ihnen zeigen, wie Sie dies ohne IDE tun können. Erfahren Sie, wie Sie eine Swing-GUI ohne Verwendung einer IDE programmieren können. Der Code wird portabler, wenn Sie jemals zu einer anderen IDE wechseln müssen. Auf diese Weise verbringst du viel Zeit mit dem Erlernen von Java, anstatt eine IDE zu lernen. Die IDE kann dann nur dazu verwendet werden, den Projektcode zu strukturieren und den Code zu debuggen. – camickr

+0

Es tut mir leid, aber das hat mir nicht geholfen, mein Problem zu lösen. Vielen Dank für Ihren Beitrag. – HMH