java swing JTable中如何设置一列中的某一个单元格为下拉列表?
请教各位SWING大神赐教:我只知道设置一列为下拉列表的方法,却不知道设置某一列为下拉列表的方法。我的JTable类继承了AbstractTableModel,据说是还要...
请教各位SWING大神赐教:
我只知道设置一列为下拉列表的方法,却不知道设置某一列为下拉列表的方法。我的JTable类继承了AbstractTableModel,据说是还要重写celleditor,但是具体的小女子不清楚。已经研究这个问题一整天了。还请看见的各位大神能敲下几行代码。感激不尽! 展开
我只知道设置一列为下拉列表的方法,却不知道设置某一列为下拉列表的方法。我的JTable类继承了AbstractTableModel,据说是还要重写celleditor,但是具体的小女子不清楚。已经研究这个问题一整天了。还请看见的各位大神能敲下几行代码。感激不尽! 展开
3个回答
展开全部
TableColumn tc=this.getColumn(0);// 取到一列
JComboBox cbx = new JComboBox(new String[] {"a","b","c"});// 建立下拉列表
TableCellEditor tce=new DefaultCellEditor(cbx);// 创建编辑器
tc.setCellEditor(tce);// 设置编辑器
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JTable的简单用法,渲染器的简单设置,单元格的是否可编辑处理,JComboBox的事件处理
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class MyTableModel {
public static void main(String[] args) {
JFrame f = new JFrame("test");
Object[][] row = {{ false,"语文","数学","英语","",""},{ false, }};
String[] h = { "修改","1", "2", "3","4", "5", };
DefaultTableModel dtm = new DefaultTableModel(){
@Override
public Class<?> getColumnClass(int c){
return getValueAt(0,c).getClass();
}
@Override
public boolean isCellEditable(int x, int y){
if ( y == 0)
return true;
else
return getValueAt(x,0).toString().equals("true");
}
};
dtm.setDataVector(row,h);
dtm.addRow(new Object[]{false,"","","","","",});
final JComboBox<String> jcb = new JComboBox<String>();
jcb.addItem("数学");
jcb.addItem("英语");
jcb.addItem("语文");
jcb.setEditable(true);
jcb.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String s = jcb.getSelectedItem().toString();
if (s.equals(""))
return;
boolean flag = true;
for (int i = 0; i < jcb.getItemCount(); i++){
if (jcb.getItemAt(i).equals(s)){
flag = false;
break;
}
}
if (flag)
jcb.addItem(s);
}
});
JTable tab = new JTable(dtm);
for (int i = 1;i < 6; i++){
tab.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(jcb));
}
f.add(new JScrollPane(tab));
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(3);
}
}
更多追问追答
追问
谢谢回答。但是你的代码里面好像是设置一列为下拉列表吧,我只想设置某一个单元格为下拉列表啊!
追答
那就设置那一个单元为可编辑属性
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询