Java Swing JTable 表格【17:使用编辑器验证文本】
2016-01-14 22:24
686 查看
在实际开发中,当用户输入的信息不属于该范围,例如需要输入年龄,用户错误的输入了家庭地址,此时编辑器会采取一定的措施,那么如何来实现这种功能呢?下面将通过一个例子来说明
这个例子是来介绍如何使用编辑器来响应用户输入的文本内容。
2.
这块代码表示当在单元格中输入”1234“,结束编辑时,单元格清空
这个例子是来介绍如何使用编辑器来响应用户输入的文本内容。
代码如下:
package com.acconsys.swing.chapter14; import java.awt.BorderLayout; import javax.swing.DefaultCellEditor; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; /** * 使用编辑器来验证用户输入的数据是否正确 * * @author Administrator * */ public class Test19 extends JFrame { public Test19() { super("输入文本测试"); String value[][] = { { "1", "2", "3", "4", "5" } }; String columnName[] = { "测试一", "测试二", "测试三", "测试四", "测试五" }; DefaultTableModel model = new DefaultTableModel(value, columnName); JTable table = new JTable(model); TableColumnModel colmodel = table.getColumnModel(); // 这个for循环语句设置一个文本框组件,将它添加到表格的单元格 // 并且设置单元格单击可编辑 for (int index = 0; index < columnName.length; index++) { TableColumn tc = colmodel.getColumn(index); JTextField editor = new JTextField(); MyCellEditor cellEditor = new MyCellEditor(editor); cellEditor.setClickCountToStart(2); tc.setCellEditor(cellEditor); } this.add(new JScrollPane(table), BorderLayout.CENTER); this.setSize(300, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { new Test19(); } } class MyCellEditor extends DefaultCellEditor { public MyCellEditor(JTextField textField) { super(textField); } // 可以通过重载这个方法来设置单元格的属性 @Override public boolean stopCellEditing() { // 当在单元格中输入”1234“时,单元格清空 String value = (String) this.getCellEditorValue(); if (value.equals("1234")) { ((JTextField) this.getComponent()).setText(""); return false; } else { return super.stopCellEditing(); } } }
运行如图:
例子看点:
1.cellEditor.setClickCountToStart(2);这个代码是用来指定用户在连续点击表格元素2次才可以编辑的。2.
public boolean stopCellEditing() { // 当在单元格中输入”1234“时,单元格清空 String value = (String) this.getCellEditorValue(); if (value.equals("1234")) { ((JTextField) this.getComponent()).setText(""); return false; } else { return super.stopCellEditing(); } }
这块代码表示当在单元格中输入”1234“,结束编辑时,单元格清空
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树