1

jTable 内にチェックボックスを配置したいので、TableCellRenderer を実装するクラスを作成しました。このクラスの getTableCellRendererComponent メソッドには、次の条件があります。

if(isSelected){ do ..... }

このif条件の中で、どうすれば行番号を知ることができますか?

コード:

 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;

    }



}
4

2 に答える 2

3

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

ブール値を使用する例については、JTable APIを読み、テーブルの使用方法に関するSwingチュートリアルへのリンクをたどってください。

于 2011-06-20T14:32:46.547 に答える
0

レンダラーに渡された行パラメーターを使用します。Java の配列と同じようにゼロベースです。

于 2011-06-20T14:23:27.677 に答える