1,如何让表单中显示单选框呢?
步骤一:设置表格数据
在表格的data中设置元素为JRadioButton
public void layoutTable( ) {//TODO Object[][] datas=new Object[4][3]; for(int i=0;i<4;i++){ Object[]objs=new Object[3]; JPanel panel=new JPanel(); panel.add(new JRadioButton()); objs[0]=panel; objs[1]="b"+i; objs[2]="c"+i; datas[i]=objs; } DefaultTableModel model = new DefaultTableModel(datas, columnNames); parameterTable_1.setModel(model); this.parameterTable_1.setRowHeight(30); }
效果如图:
表格并没有显示控件,而是显示控件的对象信息,即调用了对象的toStirng() 方法
步骤二:设置setCellEditor
parameterTable_1.getColumnModel().getColumn(0) .setCellEditor(new MyButtonEditor());
但是还是显示的对象信息,没有达到预期效果.但是鼠标点击时才显示控件
步骤三:设置setCellRenderer
parameterTable_1.getColumnModel().getColumn(0) .setCellRenderer(new MyButtonRender());
达到了预期效果:
注意:
1,要同时有控件的cell的setCellEditor 和setCellRenderer
2,MyButtonEditor如下:
package com.yunma.table; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; public class MyButtonEditor extends DefaultCellEditor { /** * serialVersionUID */ private static final long serialVersionUID = -6546334664166791132L; private JPanel panel; private JButton button; private Object obj = null; public MyButtonEditor() { // DefautlCellEditor有此构造器,需要传入一个,但这个不会使用到,直接new一个即可。 super(new JTextField()); // 设置点击几次激活编辑。 this.setClickCountToStart(1); // this.initButton(); // // this.initPanel(); // // // 添加按钮。 // this.panel.add(this.button); } private void initButton() { this.button = new JButton(); // 设置按钮的大小及位置。 this.button.setBounds(0, 0, 100, 15); // 为按钮添加事件。这里只能添加ActionListner事件,Mouse事件无效。 this.button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 触发取消编辑的事件,不会调用tableModel的setValue方法。 // MyButtonEditor.this.fireEditingCanceled(); System.out.println(button.getText() + " is pressed"); // 这里可以做其它操作。 // 可以将table传入,通过getSelectedRow,getSelectColumn方法获取到当前选择的行和列及其它操作等。 } }); } private void initPanel() { this.panel = new JPanel(); // panel使用绝对定位,这样button就不会充满整个单元格。 this.panel.setLayout(null); } /** * 这里重写父类的编辑方法,返回一个JPanel对象即可(也可以直接返回一个Button对象,但是那样会填充满整个单元格) */ @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // 只为按钮赋值即可。也可以作其它操作。 obj = value; return (JComponent) value; } /** * 重写编辑单元格时获取的值。如果不重写,这里可能会为按钮设置错误的值。 * will be invoke when editable and losing focus */ @Override public Object getCellEditorValue() { return obj; } }
3,MyButtonRender 代码如下:
package com.yunma.table; import java.awt.Component; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; public class MyButtonRender implements TableCellRenderer { public MyButtonRender() { } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // 只为按钮赋值即可。也可以作其它操作,如绘背景等。 /*** * code below is useless */ // this.button.addActionListener(new ActionListener() // { // // @Override // public void actionPerformed(ActionEvent e) // { // System.out.println("a:"+button.getText()); // } // }); return (Component)value; } }
相关推荐
ExtJs最开始基于YUI技术,由开发人员 JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是 一款不可多得的JavaScript客户端技术的精品。 ...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
13.3.3 单选框(JRadioButton) 13.3.4 组合框(JComboBox) 13.3.5 进程条(JprogressBar) 13.3.6 表格(JTable) 13.3.7 树(JTree) 13.3.8 文本框(JTextField)与文本区(JTextArea) 13.4 布局管理器 13.4.1 ...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
String uesd2[] = { "滑块","复选框", "下拉菜单", "列表", "表格", "树状" }; String layout[] = { "流式布局", "边界布局", "网格布局" }; // Jpanelitem,Jscrollpaneitem,Splitpaneitem,JTabbedpanelitem,...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 ...
5.11.2 窗体中单选按钮即时显示 243 5.12 格式化的文本框 243 5.12.1 使用JFormattedTextField限制整型 数字输入 244 5.12.2 使用JFormattedTextField限制日期 输入 244 5.13 本章总结 245 第6章 企业快信(Swing+...
2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...
第4篇Java中的高级技术 第8章Java的多线程机制266 8.1线程的概念266 8.1.1多线程的特点266 8.1.2线程的状态267 8.2Thread类268 8.2.1Thread类的构造方法268 8.2.2Thread类的常用方法268 8.3多线程程序的编写...
6.9.2 Java中的GregorianCalendar类 96 6.9.3 擅用系统已有类的思想 98 6.10 小结 99 第7章 访问控制——Java世界的卫兵 100 7.1 包的使用 100 7.1.1 声明创建包 100 7.1.2 引入包内的资源 102 7.1.3...