您的位置:首页 > 编程语言 > Java开发

Java Swing JTable 表格【17:使用编辑器验证文本】

2016-01-14 22:24 686 查看
在实际开发中,当用户输入的信息不属于该范围,例如需要输入年龄,用户错误的输入了家庭地址,此时编辑器会采取一定的措施,那么如何来实现这种功能呢?下面将通过一个例子来说明

这个例子是来介绍如何使用编辑器来响应用户输入的文本内容。

代码如下:

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 jtable swing