网上有种方法,我4了4,但只能指定每行的某列为JComboBox,我想实现特定位置就出现一个JComboBox,不需要每行都有,怎么实现啊……

解决方案 »

  1.   

    设置CellEditor有很多方法,你用的是哪种先贴出来看看啊。
      

  2.   

    我用的是:
    jtable单元格里面添加jcombobox:
    JTable table1 = new JTable(2,2);
    JComboBox  jcbox = new JComboBox();
    jcbox.addItem("第一项");
    jcbox.addItem("第二项");
    jcbox.addItem("第三项");
    jcbox.addItem("第四项");
    DefaultCellEditor ce = new DefaultCellEditor(jcbox);
    TableColumnModel cm = table1.getColumnModel();
    cm.getColumn(1).setCellEditor(ce);  //此处的1为每一行的第二列,列号从0开始;还是从这里的一个朋友的BLOG上找到的,但只能实现每行的某列,不能指定位置……
      

  3.   

    JTable中有个prepareEditor方法,在里面判断,如果是指定的单元格,则将第一个参数设置为CheckBox型的
      

  4.   

    还没弄出来……
    能把关键代码写下吗?
    我先声明一个JComboBox cbo1=new JComboBox();
    JTable tab1=new JTable();
    cbo1.addItem("XXX");……
    ……
    TableCellEditor ce=new DefaultCellEditor(cbo1);
    tab1.prepareEditor(ce,2,2);这样出不来啊……
      

  5.   

    用 prepareEditor 还是 getCellEditor 啊?
    我机器上没装JDK,明天试试。
      

  6.   

     import javax.swing.table.AbstractTableModel;  import javax.swing.*;  import java.awt.*;  import java.awt.event.*;  public class ColumnModelTest{   public ColumnModelTest() {    JFrame f = new JFrame();      /*由于我们的MyTable类继承了AbstractTableModel并且实作了getColmunCount(),       getRowCount(),getValueAt()方法.因此我们可以通       *过MyTable来产生TableModel的实体.      */     MyTable mt=new MyTable();    JTable t=new JTable(mt);//我们利用MyTable来建立JTable.    JComboBox c = new JComboBox();//建立一个JComboBox的对象.    c.addItem("Taipei");//我们在新建立的JComboBox对象里新增三个项目.    c.addItem("ChiaYi");    c.addItem("HsinChu");    /*我们利用JTable所提供的getTableColumnModel()方法取得TableColumnModel对象,    *再由TableColumnModel类所提供的getColumn()方    *法取得TableColumn对象,TableColumn类可针对表格中的每一行做具体的设置,    *例如设置字段的宽度,某行的标头,设置输入较复杂的    *数据类型等等.在这里,我们利用TableColumn类所提供的setCellEditor()方法,    *将JComboBox作为第二行的默认编辑组件.    */    t.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(c));    t.setPreferredScrollableViewportSize(new Dimension(550, 30));    JScrollPane s = new JScrollPane(t);    f.getContentPane().add(s, BorderLayout.CENTER);    f.setTitle("ColumnModelTest");    f.pack();    f.setVisible(true);     f.addWindowListener(new WindowAdapter() {     public void windowClosing(WindowEvent e) {      System.exit(0);     }    });   }   public static void main(String args[]) {    new ColumnModelTest();   }  }
      

  7.   

    public Class getColumnClass(int col)
    在这里过滤就行了
      

  8.   

    既然某一列都可以实现了,定位到某一行只是判断一下行即可呀
    if(row == ?) && (col == ?){
        return new youreditor();
    }