Java JComboBox 图标

标签 java swing jtable boolean jcheckbox

在 JTable 中显示数据。一列用作字段复选框。问题是在显示ChceckBox 中而不是出现图标true/false。我该如何解决这个问题?

添加数据:

private DefaultTableModel headermodel = new DefaultTableModel();
private JScrollPane scrollHeader = new JScrollPane();
private JTable headerTable = new JTable();

 public void loadHead(){


        header = model.getHead();

        int ids=0;
        int id=1;

        for(String head: header) {
            headermodel.addRow(new Object[]{id,head});
            headerMap.put(ids,head);
            id++;
            ids++;
            count++;
         }
        header.clear();

    }

并在JTable中显示数据:

    headerTable = new JTable(headermodel);
    headermodel.addColumn("Lp.");
    headermodel.addColumn("Column Name");
    headermodel.addColumn("Constraint");
    headermodel.addColumn("Sum");
    scrollHeader = new JScrollPane(headerTable);

    TableColumnModel tcm = headerTable.getColumnModel();

                tcm.getColumn(2).setCellEditor(new DefaultCellEditor(new JCheckBox()));
                tcm.getColumn(3).setCellEditor(new DefaultCellEditor(new JCheckBox()));
                tcm.getColumn(3).setCellRenderer(headerTable.getDefaultRenderer(boolean.class));

add(scrollHeader);

enter image description here

最佳答案

模型的 getColumnClass(int columnIndex) 方法应返回相应列索引的 Boolean.class ,以便渲染器知道为该列渲染复选框。例如,...

DefaultTableModel headermodel = new DefaultTableModel(){

    @Override
    public Class<?> getColumnClass(int columnNumber) {
       if (columnNumber == 2 || columnNumber == 3) {
          return Boolean.class;
       } else {
          return super.getColumnClass(columnNumber);
       }
    }
}

您不必为此设置这些列的单元格渲染器,因为默认单元格渲染器将适本地处理 Boolean.class

关于Java JComboBox 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29034206/

相关文章:

java - 使用 rowindex 从 JTable 检索行数据

java - 如何创建包含模块文件子集的 Maven Artifact ?

java减少mouseMotionListener间隔之间的时间

swing - 同时对两个 JTable 进行排序

java - 添加子菜单

java - 与 弹出框架相关

java - JTable里面的JScrollPane单元格大小和表格大小

java - 我怎么知道 SMS 是否已到达 Twilio 中的目的地

JApplet问题中的Java绘制图形

java - 如何在 E4 应用程序中注入(inject)自定义单例 bean?