问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JTABLE单个单元格下拉框

发布网友 发布时间:2023-09-20 07:47

我来回答

1个回答

热心网友 时间:2023-09-20 12:34

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

你可以自己做一个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[] );
model.addColumn("B", new Object[] );

String[] values = new String[] ;
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));
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
amd锐龙r75700g超频性价比装机方案,要核显性能综合表现超 架空电线故障如何排除 ...unexpected T_CONSTANT_ENCAPSED_STRING in 怎么解决这个错啊_百度... php错误Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_S... PHP出现如下情况 syntax error, unexpected T_ENCAPSED_AND_WHITES... php 如何捕获类似于Parse error: syntax error, unexpected T_CONSTA... 挂烫机如何熨西装 戗驳领西装怎么熨烫 西装前片怎么推拉拔烫 西装能不能拿去烫 extjs5.0的ext.grid.panel没有getColumnModel()方法和getColumnCount... 请问Ext中如何通过触发事件的方式,将当前ColumnModel中的列名修改_百度... extjs的dataindex 如何拼接两个字段 抬头纹好重怎么办 这是啥掌纹 三才纹手相 一生发展顺风顺水平稳安定? 我的注销后,我的王者荣耀会怎么样? 朗逸雨刷微调刷编码 中国移动13几的号码段什么时候开始使用的 全新朗逸遥控一键升窗改编码 富平县辉发饲料厂怎么样? 高陵康达尔饲料厂法人代表是谁 宝鸡市陈仓区百特饲料厂怎么样? 陕西广远食品有限责任公司怎么样? 陕西省有那些大型饲料厂,最好有地址联系方式。 下载真三国无双5怎么打开? 真三国无双5怎么进入游戏 真三国无双5怎么进入游戏? 真三国无双5怎么开始,一开始有一段动画,让后就结束了,我是新手。_百度... 真三国无双5 进路游戏后 怎么进 复旦大学出版社的发展现状 八至2度怎么写 某地一天最低气温是零下八摄氏度,应写作___. 三长两短出处和典故 三长两短的由来典故 刷机高手进,请教一个刷机的问题。 大哥大姐指教下:诺基亚QD手机刷机的疑惑 79000等于多少万 79000包干是多少工资 敲诈勒索金额79000会得到多少处罚金? 79000的一个点是多少 79000分钟等于多少天 沧州市黄骅市荣乌市走高速离塘沽有多少公里 天津塘沽到内蒙乌海有多远 容城到塘沽中心鱼港多少公里 塘沽到山东威海距离 北航可以进北师大吗 我梦见两个女人从我家吃这梨出? 货架拆装可以开增值税票吗? 未成年时有犯罪记录上了大学之后能入党吗?