在jTable

时间:2016-06-26 04:06:43

标签: java jtable string-formatting

我需要一种方法,只允许在jTable中输入某些字符。

我的jframe如下:

enter image description here

在columnd" Precedentes"我需要该列只接受数字和#34;,"。

我需要的输入示例:

enter image description here

本专栏的验证方法如下:

private void jTable1KeyPressed(java.awt.event.KeyEvent evt) {                
            i = 0; 
            String carac="0987654321,";
            if(!carac.contains(tableModel.getValueAt(i, 3)+"")){
            tableModel.consume();// TODO add your handling code here:
            }
}  

i =>它是我的行号(它在循环中用于验证每一行)。 所以我一行一行地获取用户在列中输入的内容"先行"并用该方法验证。

当我输入的不是数字或","专栏" Precedente"不应该接受。

执行my方法时出现错误消息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

我认为我需要的是一个只接受数字","的面具,但我不知道如何对jTable的列进行此操作,我知道如何这有一个文本字段,但我用来验证文本字段中的方法并不适用于jtable。

1 个答案:

答案 0 :(得分:1)

How to Use Tables: Using an Editor to Validate User-Entered Text所示,您可以覆盖DefaultCellEditor方法stopCellEditing()以检查文本是否有效。 CellEditor看到的Integer here是类型Date的模型值的示例。对于JFormattedTextField类型的值,您可以在CellEditor中使用SimpleDateFormat,如图所示here,您可以使用JFormattedTextField验证日期,如图所示{{ 3}}。要验证单个字符,请使用here构建console.log(array[number]); ,如图所示MaskFormatter