8

序文: 私は Java が苦手で、Java UI コンポーネントが苦手です。

ボタンをテーブルに追加する方法に関するいくつかの異なるチュートリアルを見つけましたが、チェックボックスの追加に苦労しています。デフォルトでチェックされたテキストボックスを描画する列が必要です(セルレンダラーはそれを処理すると思います)。次に、チェックボックスをクリックすると、ボックスのチェックを外し、ボックスを再描画し、追跡できる場所でイベントを発生させます。

現在、私はカスタムセルレンダラーを持っています:

public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    if(isSelected)
        setSelected(true);
    else
        setSelected(false);
    setMargin(new Insets(0, 16, 0, 0));
    setIconTextGap(0);

    setBackground(new Color(255,255,255,0));
    return this;
}}

現在、チェックボックスの描画を処理していますが、その行が選択されている場合にのみボックスのチェックとチェック解除を行います。しかし、私はイベントを処理する方法がわかりません。本当に私が求めているのは、チェックボックスを JTable にきれいに追加する方法に関する優れたチュートリアルへのリンクです。どんな支援も大歓迎です:)

4

5 に答える 5

25

独自のテーブル レンダラーを作成する必要はありません。 より簡単な例を次に示します。カスタム テーブル モデルを作成するだけで、特定の列に対してクラス Boolean が返されます。

public Class getColumnClass(int column)

列を編集可能にする場合は、 true を返します

public boolean isCellEditable(int row, int column)

JTable がレンダリングを処理します。

別の例はこちらです。

于 2010-05-25T01:50:13.597 に答える
6

ピーターが言うように、拡張された DefaultTableModel クラスを使用するのは簡単です。例:

class NewTableModel extends DefaultTableModel{
        public Class<?> getColumnClass(int columnIndex) {
            return getValueAt(0, columnIndex).getClass();
        }
    }
于 2011-08-07T19:43:38.780 に答える
4

とを使用した単純で複雑なを次に示します。概念: エディターとレンダラーも参照してください。TableCellRendererTableCellEditor

補遺: @Jay Askren の指摘はよく理解されています。Boolean.classチュートリアルで説明されているように、のデフォルトのレンダラーで十分な場合があります。

于 2010-05-25T01:43:38.413 に答える
3

最も簡単な解決策は、DefaultTableModelを使用し、ブールオブジェクトを値として使用することです。

于 2010-05-25T07:02:25.840 に答える
-5

Swing Designer で、列の型をブール値に設定します

于 2012-11-11T05:54:32.120 に答える