2015-01-10 67 views
1

不應該將新布爾顯示爲複選框嗎?它顯示爲真/假字符串值。這就是我如何填充數據:爲什麼JTable中的布爾值顯示爲true/false而不是複選框?

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)); 
+0

你找到了解決辦法? –

+0

尚未:\ 下的複選框列的值是「假,真等..」沒有複選框 – user7

+0

你有沒有嘗試使用DefaultTableModel呢? –

回答

0

你需要安裝一個的TableCellRenderer和TableCellEditor的

看到http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

一旦你定義渲染的/編輯的,你可以

  • 將渲染/編輯器定義爲默認渲染類型 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());


  • 您可以定義一個複選框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類。

相關問題