2012-01-31 175 views
1

在java Swing table中,如何将一个单元格拆分为两个,一个是TextField,另一个是复选框。我做了一些代码,但不起作用。感谢java swing自定义表格单元格?

public class CustomTableCellRenderer extends DefaultTableCellRenderer { 
     public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { 
      Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column); 
      JTextField fld = new JTextField(); 
      JCheckBox chx = new JCheckBox(); 
      cell.add(fld); // Doesn't work 
      cell.add(chx); // Doesn't work 

      return cell; 
     } 
    } 
+0

渲染器用于渲染(显示)一些数据。它不用于输入数据。你为什么想要这样的渲染器?另外,由'super.getTableCellRendererComponent(...)'返回的组件是一个JLabel。你不应该添加元素到JLabel。 – 2012-01-31 17:06:07

回答

3

1)在这种情况下,你必须定义LayoutManager,因为JLabel/JComponent(默认情况下返回TableCellRenderer)不implemented any LayoutManager

2)把JPanelnested another JComponentsJPanel在默认情况下FlowLayout)进入细胞

3)最舒适的将被投入到JTextField一个柱和Boolean值(返回JCheckBox)到另一列