java组合框下拉按钮美化,在表格单元格中显示组合框

在一些书上,看见表格中有多种选项,可以供使用者选择?那么在java中如何实现呢?今天通过查阅资料,终于实现了,嘿嘿,所以分享下。

关键例子代码:

String[] states = {"缺货","需要进货","不需要进货"};

String[] header = {"书名","状态"};

model = new DefaultTableModel();

model.setColumnIdentifiers(header);  //设置表头

model.addRow(new Object[]{"java",states[0]});

model.addRow(new Object[]{"c++",states[0]});

table = new JTable(model); // 创建表格

// 获得表头,设置表头样式

JTableHeader head = table.getTableHeader();

head.setFont(new Font("微软雅黑", Font.PLAIN, 15));

head.setPreferredSize(new Dimension(head.getWidth(), 25));//设置表头长度和高度

// 设置表体样式

table.setFont(new Font("微软雅黑", Font.PLAIN, 15));

table.setRowHeight(20);  // 设置高度

JComboBox combobox = new JComboBox(states);

combobox.setFont(new Font("微软雅黑", Font.PLAIN, 15));

DefaultCellEditor editor = new DefaultCellEditor(combobox);

TableColumnModel column = table.getColumnModel();

column.getColumn(1).setCellEditor(editor);  // 这是编辑的第二列

column.getColumn(0).setPreferredWidth(100); //设置第一列的宽度为100

scrollPanel = new JScrollPane(table);

this.getContentPane().add(scrollPanel);

对于上面的代码,自己总结了一下步骤:

1、创建表格模型,

2、创建表格(当然第一二步其实也可以和在一起的,直接创建一个含有数据的表格)

3、创建单元编辑器 即,DefaultCellEditor。他的内容是JComboBox对象,当然也可以是JTextField(对于其他的好像不行,我试过了,另外这个类的构造函数也只支持这个两个,但是否还有其他办法,这我就不清楚了)

4、获得表格的 列模型。TableColumnModel,最后将这一列的CellEditor设置为刚才创建的那个就行了。

…………

运行结果为:

955bd7fa26f1c585894f2447f0e65dfb.png

但是有一点,我还是不明白,就是:为什么不点击那单元格(这个单元格没有得到焦点)的时候,它的样子不是JComboBox样式,当失去焦点的时候,他显示的是被选中的Text。这样一来,就让人觉得那就是一般的表格,没有什么特殊的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值