您的位置:首页 > 其它

在JTable中实现添加下拉框组件JComboBox

2013-11-21 09:33 453 查看
/**
*
*/
package frame;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
/**
* @author duchao
*
*/
public class MyTable extends JTable {
/**
* 序列化
*/
private static final long serialVersionUID = 1L;
private 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);
}
public static void main(String[] args) {
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));
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);
}
}

/**
*
*/
package frame;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
/**
* @author duchao
*
*/
class MyComboBoxEditor extends DefaultCellEditor {
/**
*
*/
private static final long serialVersionUID = 1L;
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: