2011-06-20 14 views
1

TableCellRendererを実装するクラスを作成しました。なぜなら、jTableの内部にチェックボックスを入れたいからです。 このクラスのgetTableCellRendererComponent方法において、iは、条件を有する:java jTable:行番号を知る方法?

条件場合は、この内部

を{...}行う(isSelected)であれば、どのように行番号を知ることができますか?

コード:

private static class ValueRenderer extends JCheckBox 
    implements TableCellRenderer { 

    private static final Color hilite = new Color(0xE8E8E8); 

    public ValueRenderer() { 
     this.setOpaque(true); 
    } 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int col) { 
     Value v = (Value) value; 
     this.setSelected(v.selected); 

     if(isSelected) 
     { 
      if(v.selected==true) 
      System.out.println("checked"); 
      else System.out.println("unchecked"); 
     } 
     return this; 
    } 
} 

    private static class Value { 
    private Boolean selected; 

    public Value(Boolean selected) { 
     this.selected = selected; 

    } 



} 
+0

メソッドのシグネチャにある 'row'を使用するだけです。 – Fender

+0

私はこれを気付かなかった、あなたの助けに感謝します! – shaw

+1

そのように注意してください。この方法では、同じ列のすべての行の値に対して単一のレンダラーを使用することが強制されます。 – Heisenbug

答えて

0

あなたのレンダラに渡された行パラメータを使用します。これは、Javaの配列と同様にゼロに基づいています。

3

なぜValueクラスとカスタムレンダラーを作成していますか?コードからは単なるブール値です。ブール値をTableModelに直接追加してから、JTableまたはTableModelのgetColumnClass()メソッドをオーバーライドしてBooleanを返し、テーブルはデフォルトのBooleanレンダラーを使用します。

JTable APIを読んで、ブーリアンを使用する例については、表の使い方のSwingチュートリアルへのリンクに従ってください。

関連する問題