java swing 中JTable实现指定单元格为下拉框
import java.awt.Component;
import java.awt.Dimension;
import java.util.EventObject;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
/**
* 自定义celleditor实现
* 指定单元格设置下拉框,其他单元格设置文本框
*
*/
public class JBoxTestCell extends AbstractCellEditor implements
TableCellEditor {
int row;
private JTable table;
private JPanel p1;
private JComboBox jbox;
private Object val = null;
private JTextField jt_0=new JTextField();
private JTextField jt_2=new JTextField();
public JBoxTestCell() {
p1 = new JPanel(new BorderLayout());
p1.setPreferredSize(new Dimension(300, 30));
String[] interest1 = { "rap", "手指舞", "理发","冲天炮"};
jbox = new JComboBox(interest1);
jbox.setPreferredSize(new Dimension(200,25));
jbox.setSelectedIndex(0);
p1.add(jbox, BorderLayout.CENTER);
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public void showSave() {
jbox.setVisible(true);
}
if(row==1) {
String v1 = jbox.getSelectedItem().toString();
return v1;
}
String result="";
switch(this.row) {
case 0 : result = jt_0.getText().trim(); break;
case 2 : result = jt_2.getText().trim(); break;
}
return result;
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
this.table = table;
this.row = row;
val = value;
JTextField result = new JTextField();
switch(this.row) {
case 0 : result = jt_0; break;
case 1 : return this.jbox;
case 2 : result = jt_2; break;
}
return result;
}
}
import java.util.Vector;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.TableColumnModel;
import java.awt.Font;
/**
* 测试类
* 实现第四列第二行为下拉框,其余行为文本框
* 第五列一列为下拉框
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, 484, 361);
frame.getContentPane().add(panel);
frame.setVisible(true);
String[][] str= {{"小贾","13","160","帽子",""},{"阿P","16","165","rap",""},{"小李","19","158","做头发",""}};
String[] title= {"姓名","年龄","身高","爱好1","爱好2"};
JTable table = new JTable(str,title);//测试表格
table.setFont(new Font("微软雅黑", Font.PLAIN, 12));
JScrollPane scrollPane_1 = new JScrollPane(table);//滚动组件
scrollPane_1.setBounds(0, 0, 484, 361);
scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
panel.add(scrollPane_1);
JBoxTestCell jc = new JBoxTestCell();//第四列第二行为下拉框,其余行为文本框
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(3).setCellEditor(jc);
String[] str2 = { "rap", "手指舞", "理发","冲天炮"};
JComboBox jbox= new JComboBox(str2);
jbox.setSelectedIndex(0);
TableColumnModel col = table.getColumnModel();
col.getColumn(4).setCellEditor(new DefaultCellEditor(jbox));//设置第5列一列为下拉框
}

java swing 中JTable实现指定单元格为下拉框的更多相关文章
- NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)
NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...
- 【Excel】单元格的下拉框是怎么做的?
如果我们希望将产品这一列的每个单元格都能选择 左侧的产品就好了,就像这样 这里使用的是"验证数据有效性"功能 在这里: 点击F,选择F列后,打开“数据验证”,如图,选择序列,选择来 ...
- C# Winform 中DataGridView 实现单元格输入下拉框功能
https://blog.csdn.net/ad13adsa/article/details/82108969 private void dataGridViewX1_EditingControlSh ...
- LibreOffice/Calc:单元格设置下拉菜单
造冰箱的大熊猫,本文适用于LibreOffice Calc 5.1.6.2 + Ubuntu 16.04@cnblogs 2019/1/2 LibreOffice是一个类似Microsoft Off ...
- js中遍历出查询后的listmodel(下拉框系列)
function selectclassname(){ $.ajax({ url:"queryschoolclasslists.action", async:false, data ...
- js中给easyUI年份,月份选择下拉框赋值
sp中定义 js中初始化 //年度下拉框初始化 $("#yearChoose").combobox({ valueField:'year', textField:'y ...
- Excel的单元格设置下拉选项并填充颜色
如何在Excel的单元格中加入下拉选项 方法/步骤 第一步:打开excel文档,选中需加入下拉选项的单元格. 第二步:点击菜单中的“数据”->“数据有效性”->“数据 ...
- 在elementUI中使用 el-autocomplete 实现远程搜索的下拉框
参考;https://blog.csdn.net/qq_37746973/article/details/78402812?utm_source=blogxgwz1 https://blog.csdn ...
- java swing 开发 -JTable
最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于wi ...
随机推荐
- python 装饰器 第四步:基本装饰器的实现
#第四步:基本装饰器的实现 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(): #以下三步就是扩展之后的功能,于是我们把这三 ...
- Liunx平台安装MySQL操作步骤
使用yum安装MySQL 第一步 第二步 第三步 数据库安装成功 修改数据库密码,并且删除匿名用户.禁止root远程登录.删除test数据库.刷新权限. 使用命令进入后,找到自己的临时密码,并且修改 ...
- 牛客网练习赛 2 烟花(概率dp)
题目传送门 烟花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目 ...
- run (简单DP)
链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 题目描述 White Cloud is exercising in the playgroun ...
- Java模拟HttpClient进行Get和Post提交
使用Java模拟客户端进行提交,需要用到apache http client jar,这里用的是4.4版本 GET: public void GetURL(){ String strResp=&qu ...
- Java中 Map用法
public static Map GetGoodTypes() { Map goodTypes=new HashMap(); goodTypes.put(1,"原材料"); go ...
- linux100day(day8)--shell监控脚本练习
这是一个大型的监控脚本,方便于查看硬盘,网络,负载,内核版本等系统信息. 本脚本来自于github的atarallo,我对脚本做出了改编和一些注释,尽量让新手也能理解,这个脚本逻辑清楚简单,适合用于练 ...
- 中州韵输入法(rime)导入搜狗词库
rime是一个非常优秀的输入法,linux平台下的反应速度远超搜狗,也没有隐私风险.2012年开始接触它,到后来抛弃了它,因为rime自带的词库真的太弱了,也懒得折腾.最近发现一个词库转换软件叫ime ...
- (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 错误
使用网页版jupyder在读取桌面文件时,刚开始我的代码是: baseball = pd.read_csv('C:\Users\TuZhiqiang\Desktop\result.csv')print ...
- CSS 3D 的魅力
作者 | 子慕大诗人 来源 | www.cnblogs.com/1wen/p/9064011.html 前言: 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下. 在阅读 ...