java swing JTable中如何设置一列中的某一个单元格为下拉列表?

请教各位SWING大神赐教:我只知道设置一列为下拉列表的方法,却不知道设置某一列为下拉列表的方法。我的JTable类继承了AbstractTableModel,据说是还要... 请教各位SWING大神赐教:
我只知道设置一列为下拉列表的方法,却不知道设置某一列为下拉列表的方法。我的JTable类继承了AbstractTableModel,据说是还要重写celleditor,但是具体的小女子不清楚。已经研究这个问题一整天了。还请看见的各位大神能敲下几行代码。感激不尽!
展开
 我来答
百度网友ef2ed3d99
2014-02-27 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:131万
展开全部
如一楼所示代码,只要控制如下代码的某个单元格即可:
tab.getColumnModel().getColumn(“单元格ID”).setCellEditor(new DefaultCellEditor(jcb));
wh猎人
推荐于2017-09-27 · TA获得超过1125个赞
知道大有可为答主
回答量:1157
采纳率:89%
帮助的人:642万
展开全部
TableColumn tc=this.getColumn(0);// 取到一列
JComboBox cbx = new JComboBox(new String[] {"a","b","c"});// 建立下拉列表
TableCellEditor tce=new DefaultCellEditor(cbx);// 创建编辑器
tc.setCellEditor(tce);// 设置编辑器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hitzsf
推荐于2017-09-28 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1143万
展开全部
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);   
    }   
}
更多追问追答
追问
谢谢回答。但是你的代码里面好像是设置一列为下拉列表吧,我只想设置某一个单元格为下拉列表啊!
追答
那就设置那一个单元为可编辑属性
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式