2016-07-27 9 views
0

からローを添加しながら、私はJPanelのを持た変更のJTableの行全体の色のMySQL

enter image description here

(RIGHT)MySQLの結果セットから生成されたトランザクション・テーブル内のデータは、ユーザが行の選択したときの下等プロットテーブル(LEFT)。以下のコードは:それがない場合は

 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(); 
     } 

私は「確認済み」列がチェックされている場合はGREENに行の色を変更し、無着色のままにしたいと思います。また、ユーザーが列の値を変更すると、それに応じて色も更新されます。すべての助けをいただければ幸いです。

編集:私は最初の値がfalseの場合、左側のテーブルから行を選択しクリックすると今

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()); 
    .... 
    .... 
} 

:私はクラスを作成し、以下のように私のコンストラクタにこれを追加しました

それは色を変更しませんが、それが真であれば、 '検証済み'列だけが緑に変わり、値が真か偽かは常に緑になります。また、チェックボックスは真/偽になりました。

enter image description here

答えて

3

私は '確認済み' 列が

をチェックされている場合Table Row RenderingをチェックGREENへの行の色を変更したいと思います。

JTableprepareRenderer(...)メソッドをオーバーライドして、行内のデータに基づいて行全体をカラーリングする方法を示します。次のように

このメソッドをオーバーライドするための基本的な構造は次のようになります。

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

とどのように私は、NetBeansで私のテーブルにコードのこの部分を追加できますか? – HMH

+2

@HMH、私はIDEを使用したことがないので、これを行う方法を教えてくれません。 IDEなしでこれを行う方法を示す実例が与えられています。 IDEを使用せずにSwing GUIをコーディングする方法を学んでください。別のIDEに移動する必要がある場合、コードはより移植性が高くなります。この方法で、IDEを習得するのではなく、Javaを学ぶ時間を費やします。 IDEは、プロジェクトコードの構造化とコードのデバッグにのみ使用できます。 – camickr

+0

申し訳ありませんが、それは私の問題を解決するのに大いに役に立たなかった。しかし、あなたの貢献に感謝します。 – HMH

関連する問題