如何将JCheckbox放在JTable上?

时间:2011-04-08 11:51:49

标签: java swing jtable jbutton jcheckbox

如何在JCheckbox的特定行和列上添加JButtonJTable

4 个答案:

答案 0 :(得分:1)

不确定按钮,但这是一个放置复选框的工作示例:

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);
  }
}

答案 1 :(得分: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);
}

答案 2 :(得分:0)

对于复选框:Herehere,您会找到工作示例。

对于按钮:herehere,您会找到工作示例。

答案 3 :(得分:0)

为此,您必须撰写TableCellRendererTableCellEditor

您可以从默认的swing实现派生,以便更轻松。

在每个类中,您必须覆盖这些接口的一个方法,并在其中检查传递的rowcolumn参数;如果行和列都符合您的条件,则返回JCheckBoxJButton,否则返回JComponent实现返回的super(当使用这些实现的默认swing实现时)接口)。