如何设置无法删除的文本字段的初始值

时间:2014-04-22 20:45:12

标签: java swing jtextfield

我知道如何为JTextFiled设置初始值,但是如何设置要修复的值的属性?

这是值

的正常方式
JTextFiled is = new JTextFiled("00:00:00");

当然,输出将是值为00:00:00的文本字段,但用户可以删除它。我怎么能阻止这种情况发生? 该字段的值为00:00:00,如果用户尝试删除该值,Java将在尝试编辑该值时阻止他。唯一的方法是使用键盘上的数字。

2 个答案:

答案 0 :(得分:1)

选项1 - 将JFormattedTextFieldSimpleDateFormat一起使用

JFormattedTextField textField = new JFormattedTextField(new SimpleDateFormat("HH:mm:ss:SSS"));
textField.setText("00:00:00:000");
  • 您可以通过查看SimpleDateFormat API
  • ,根据需要替换格式字符串
  • 只要电影不超过24小时,此模式就可以使用。
  • 这样用户可以删除字符串,但是一旦他离开文本字段,字符串将返回到之前的状态。实际上只接受指定格式的字符串作为值。

选项2 - 将JFormattedTextFieldMaskFormatter一起使用

MaskFormatter mask = null;
try {
    mask = new MaskFormatter("##:##:##:###");
} catch (ParseException e) {
    e.printStackTrace();
}
mask.setValidCharacters("0123456789");
mask.setPlaceholderCharacter('0');
JFormattedTextField textField2 = new JFormattedTextField(mask);
textField2.setText("00:00:00:000");
  • 您可以通过查看MaskFormatter API
  • ,根据需要替换格式字符串
  • 只要电影不超过99小时,此模式就可以工作,但是分钟和秒数可以超过59(例如,您可以将01:76:98:123读取:1小时76分98秒123毫秒)。
  • 这样,用户只能输入数字(由" 0123456789"指定),删除任何数字都会将其替换为0(由' 0'指定)。

答案 1 :(得分:0)

这是如何禁用退格函数

textField.getInputMap().put(KeyStroke.getKeyStroke("BACK_SPACE"), "none");