swing jtable  中某一列有jtextfield又有jcombox怎么做
急急急

解决方案 »

  1.   

    可以先实现一个继承JPanel的并包含jtextfield和jcombox的mypanel,然后把自己实现的mypanel数组初始化到jtable中
      

  2.   

    技术上是可以的,而且应该并不太困难:但我觉得你大致需要自己实现一个TableCellRenderer,
    加入到TableColumnModel里。因为:
    TableCellRenderer.getTableCellRendererComponent
    传过来的参数有 表格和当前所处的行列以及值,所以,你完全可以根据需求,判断后返回不同的component。
      

  3.   


    JComboBox moonCombo = new JComboBox();
    for (int i = 0; i <= 20; i++)
      moonCombo.addItem(i);TableColumnModel columnModel = table.getColumnModel();
    TableColumn moonColumn = columnModel.getColumn(PlanetTableModel.MOONS_COLUMN);
    moonColumn.setCellEditor(new DefaultCellEditor(moonCombo));
      

  4.   


    class MyEditor extends DefaultCellEditor {    public MyEditor(JTextField textField) {
            super(textField);
        }    @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
                int row, int column) {
            if (row % 2 == 0) {
                return new JTextField();
            } else {
                return new JComboBox();
            }
        }
    }然后 table.getColumnModel().getColumn(0).setCellEditor(new MyEditor(new JTextField()));
      

  5.   


    class MyEditor extends DefaultCellEditor {    public MyEditor(JTextField textField) {
            super(textField);
        }    @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
                int row, int column) {
            if (row % 2 == 0) {
                return new JTextField();
            } else {
                return new JComboBox();
            }
        }
    }然后 table.getColumnModel().getColumn(0).setCellEditor(new MyEditor(new JTextField()));