1

a の特定の行と列にaJCheckboxまたはを配置するにはどうすればよいですか?JButtonJTable

4

4 に答える 4

2

ボタンについてはわかりませんが、チェックボックスを配置する実際の例を次に示します。

import javax.swing.*;
import javax.swing.table.*;

public class Test {
  public static void main(String [] args) throws Exception {
    DefaultTableModel model = new DefaultTableModel(null, new String [] {"CheckMe", "Value"}) {
                                public Class getColumnClass(int c) {
                                  switch (c) {
                                    case 0: return Boolean.class;
                                    default: return String.class;
                                  }   
                                } };
    JTable table = new JTable(model);
    JFrame frame = new JFrame("CheckBox Test");
    frame.add(table);
    model.addRow(new Object [] {true, "This is true"});
    model.addRow(new Object [] {false, "This is false"});
    frame.pack(); frame.validate();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
}
于 2011-04-08T12:11:18.643 に答える
1

khachik の回答からわかるように、チェック ボックスのサポートは、列の列クラスに基づくテーブルによって提供されます。

ただし、特定の列の特定の行にのみチェック ボックスが必要な場合は、getCellRenderer(...) および getCellEditor(...) メソッドをオーバーライドして、特定のセルのレンダラー/エディターを返す必要があります。何かのようなもの:

public TableCellEditor getCellEditor(int row, int column)
{
    int modelColumn = convertColumnIndexToModel( column );

    if (modelColumn == 1 && row < 3)
        return getDefaultEditor(Boolean.class);
    else
        return super.getCellEditor(row, column);
}
于 2011-04-08T15:08:16.667 に答える
0

チェックボックスの場合:ここここに実際の例があります。

ボタンの場合:ここここに実際の例があります。

于 2011-04-08T11:56:18.903 に答える
0

そのためには、 aTableCellRendererと aを書く必要がありますTableCellEditor

簡単にするために、デフォルトのスイング実装から派生させることができます。

各クラスでは、これらのインターフェイスの 1 つのメソッドをオーバーライドする必要があります。その中で、渡された引数と渡さrowれたcolumn引数を確認します。行と列の両方が基準に一致する場合は aJCheckBoxまたは aJButtonを返し、そうでない場合は実装JComponentによって返された を返しsuperます (これらのインターフェースのデフォルトのスイング実装を使用している場合)。

于 2011-04-08T14:10:57.593 に答える