2012-01-31 277 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)到另一列