2011-09-14 5 views
3

オンラインの指示に従って、JTableにチェックボックスを挿入しました。ここでこれを行うには、私のコードは次のとおりです。JTableでのJCheckBoxの動作

protected class JTableCellRenderer implements TableCellRenderer { 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, 
     boolean isSelected, boolean hasFocus, int row, int column) { 
     JCheckBox rendererComponent = new JCheckBox(); 
     rendererComponent.setSelected((Boolean) tableModel.getValueAt(row, 
     column)); 
     return rendererComponent; 
    } 

    }

私は、JTableのにチェックボックスを追加するために管理が、私は私のプログラムを実行すると、その後、私は次のような動作を得る:

私はどのように

enter image description here

ユーザーがチェックボックスをクリックしたときにドロップダウンメニューからTrueまたはFalseを選択するのではなく、チェックボックスをチェックすることができますか?ありがとう!

答えて

6

レンダラやエディタを操作する必要がないため、あなたが従う方向が悪いです(そして、エディタを変更せずにレンダラを変更したという問題があります)。 TableModelクラスには、getColumnClass(int index)メソッドをオーバーライドし、チェックボックスが必要な列のBoolean.classを返すだけです。それでおしまい。 JTableは、列のレンダラーとエディターの両方に対して、自動的にチェックボックスを使用して問題を簡単に解決します。もちろん、その列のデータは、これが機能するにはブール値でなければならないことは言うまでもない。

JTables上のOracleチュートリアルでは、すべての本以上を教えてくれます:How to use Tables

+0

はどうもありがとうございました!私は両方のソリューションを試しました。つまり、 'TableCellEditor'を追加し、' TableCellRenderer'と 'TableCellEditor'の両方を削除し、' getColumnClass(int index) 'メソッドを修正しました。私は後者の解決策に固執しています。ほんとうにありがとう! –

関連する問題