簡體   English   中英

為什么JTable中的布爾值顯示為true / false而不是復選框?

[英]Why is a boolean value in JTable showing as true/false instead of a checkbox?

新的布爾值不應該顯示為復選框嗎? 而是顯示為真/假字符串值。 這就是我填充數據的方式:

    Object[] columnNames4 = {"Name", "City", "Checkbox"};
    Object[][] data = {
    {"john smith",
     "x", new Boolean(false)},
    {"jenny m",
     "y", new Boolean(false)}
     };
    JTable table4 = new JTable(data, columnNames4);
    JScrollPane S3 = new JScrollPane(table4);
    S3.setPreferredSize(new Dimension(300, 300));

創建AbstractTableModel的子類,並在方法getColumnClass()中為所需的列返回Boolean.class。

您需要設置一個TableCellRenderer和TableCellEditor

參見http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

定義渲染器/編輯器后,您可以

  • 將渲染器/編輯器定義為類型table.setDefaultRenderer(Boolean.class, new MyBooleanRender()); table.setDefaultEditor(Boolean.class, new MyBooleanCellEditor());的默認渲染器table.setDefaultRenderer(Boolean.class, new MyBooleanRender()); table.setDefaultEditor(Boolean.class, new MyBooleanCellEditor()); table.setDefaultRenderer(Boolean.class, new MyBooleanRender()); table.setDefaultEditor(Boolean.class, new MyBooleanCellEditor());

  • 定義呈現器/編輯器到一列TableColumnModel tcm = table.getColumnModel(); tcm.getColumn(4).setCellRenderer(new MyBooleanRender()); tcm.getColumn(4).setCellEditor(new MyBooleanCellEditor()); TableColumnModel tcm = table.getColumnModel(); tcm.getColumn(4).setCellRenderer(new MyBooleanRender()); tcm.getColumn(4).setCellEditor(new MyBooleanCellEditor());


  • 您可以定義一個復選框cellRender,如下所示:

     public class MyBooleanRender extends JCheckBox implements TableCellRenderer { private JCheckBox checkBox = this; /** * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent * (javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ public Component getTableCellRendererComponent( JTable tbl, Object value, boolean isSelected, boolean hasFocus, int row, int column) { boolean val = false; if (Common.isEmpty(value)) { checkBox.setSelected(false); } else { try { val = ((Boolean) value).booleanValue(); } catch (Exception e) { } checkBox.setSelected(val); } if (Common.OPTIONS.highlightEmpty.isSelected() && value == Common.MISSING_VALUE) { checkBox.setBackground(Common.EMPTY_COLOR); } else if (value == Common.MISSING_REQUIRED_VALUE) { checkBox.setBackground(Common.MISSING_COLOR); } else { ... } checkBox.setSelected(val); return checkBox; } } 
  • 對於checkboxEditor,可以使用DefaultCellEditor類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM