有没有办法在jtextfield放一个冒号,所以它不能删除?

时间:2012-06-26 20:31:49

标签: java swing jtextfield colon jformattedtextfield

我希望用户输入时间,所以就像12:00一样,但我需要弄清楚一些事情而且我很遗憾。

  1. 我可以将文字限制为5个字符吗?
  2. 我可以在代码中嵌入冒号,以便用户无法删除吗?
  3. 最后,我可以接受该代码并验证它只是数字(当然忽略冒号)

3 个答案:

答案 0 :(得分:7)

答案是使用JFormattedTextFieldMaskFormatter

例如:

String mask = "##:##";
MaskFormatter timeFormatter = new MaskFormatter(mask);
JFormattedTextField formattedField = new JFormattedTextField(timeFormatter);

Java编译器将要求您在创建MaskFormatter时捕获或抛出ParseException,因此请务必执行此操作。

答案 1 :(得分:2)

或者只是抛弃您的文本字段并选择由JSpinner分隔的两个JLabel实例,其中包含冒号(或两个JTextField个实例)。

不完全确定此解决方案对用户更直观,但我认为是这样。

答案 2 :(得分:0)

对旧问题的迟到答案;利用<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script> <select id="state" class="js-example-basic-single" type="text" style="width:90%"> <option value="AL">Alabama</option> <option value="WY">Wyoming</option> </select> <br> <br> <input id="new-state" type="text" /> <button type="button" id="btn-add-state">Set state value</button>可以实现这三个要求。

非生产质量代码可能是这样的

DocumentFilter