如何在JTable的一个单元格中嵌入下拉框

在一个JTable表格中的一个单元格中嵌入下拉框。不是一列都变成下拉框,只有一个下拉单元格,其他单元格都还是普通单元格。
各位java牛人最好能附上一个小例程,小弟学java才没几天。
谢谢~~~~
还有个小要求,就是下拉框显示的时候可以自己指定初值.

我去看了2楼的网页,只找到一列都成为下拉框的。我想要的是只有指定一个单元格嵌入下拉框。
3楼的可以实现,只是不够自由,我希望的是,在添加每一行信息时都能随时指定其中某个为下拉框。
4楼的比较符合我的设想,只是没能实现,能不能再讲详细点。

**答案仅做参考,如有错误,请不要骂街**

你可以自己做一个JTable的子类,然后覆盖他的方法getCellEditor(int row,int col),在你的子类你可以设计一个方法,允许用户设置指定的一个cell使用下拉框编辑器,然后再你覆盖的方法中,判断当前请求编辑的cell,是不是你指定的,如果是则返回下拉框编辑器. 如果你需要对多个单元指定不同的下拉框编辑器,那么你可以在JTable的子类中用List等保存多个cell.

下面是根据上面网址的一个例子修改而成的,你做为参考吧.

import javax.swing.CellEditor;

import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;

public class Main {
public static void main(String[] argv) throws Exception {
MyTable table = new MyTable();
DefaultTableModel model = (DefaultTableModel) table.getModel();

model.addColumn("A", new Object[] { "item1","item3" });
model.addColumn("B", new Object[] { "item2","item4" });

String[] values = new String[] { "1", "2", "3" };
table.setComboCell(1, 1, new MyComboBoxEditor(values));

// TableColumn col = table.getColumnModel().getColumn(0);
// col.setCellEditor(new MyComboBoxEditor(values));
// col.setCellEditor(new MyComboBoxRenderer(values));
// table.setModel(model);
// table.updateUI();
JScrollPane jp=new JScrollPane(table);
jp.setViewportView(table);
jp.setSize(400,300);
JFrame jf=new JFrame();
jf.getContentPane().add(jp);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(400,300);
jf.setVisible(true);

}
}

class MyTable extends JTable{
int myRow=-1,myCol=-1;
TableCellEditor myEditor;
public void setComboCell(int r,int c,TableCellEditor ce){
this.myRow=r;
this.myCol=c;
this.myEditor=ce;
}

@Override
public TableCellEditor getCellEditor(int row, int column) {
System.out.println(row+","+column+";"+myRow+","+myCol+","+myEditor);
if(row==myRow&&column==myCol&&myEditor!=null)
return myEditor;
return super.getCellEditor(row, column);
}

}

class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-02
你可以在你所要放下拉框的地方放一个pannel 然后再pannel上放combox 就可以了,成员为数组!!!!!!!
第2个回答  2010-01-31
在需要的单元格中嵌入代码就可以,下拉框有个类具体实现,那些默认值你可以自己填写,这个问题不需要考虑。去找一下,那个类就OK。具体是什么,我也记不住了。
第3个回答  2010-02-08
http://www.java2s.com/Code/Java/Swing-JFC/Table-Renderer-Editor.htm
这个网页有各种个样的表格,你自己看把!而且这个网站其他内容对你也绝对是超值的。 自己去修改把,别指望都让别人给你做。
第4个回答  2010-02-18
用JComboBox()

String str = {"a","b","c"};
JComboBox jcb = new JComboBox(str);
相似回答