天天看点

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

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

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

代码如下:

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 = ; index < columnName.length; index++) {
            TableColumn tc = colmodel.getColumn(index);
            JTextField editor = new JTextField();
            MyCellEditor cellEditor = new MyCellEditor(editor);
            cellEditor.setClickCountToStart();
            tc.setCellEditor(cellEditor);
        }
        this.add(new JScrollPane(table), BorderLayout.CENTER);
        this.setSize(, );
        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();
        }
    }

}
           

运行如图:

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

例子看点:

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“,结束编辑时,单元格清空