我需要一种方法,只允许在jTable中输入某些字符。
我的jframe如下:
在columnd" Precedentes"我需要该列只接受数字和#34;,"。
我需要的输入示例:
本专栏的验证方法如下:
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。
答案 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
。