在让JFormattedTextField与我的自定义格式一起工作时遇到很多挫折之后,我想知道是否有使用正则表达式的Formatter或FormatterFactory?我的想法是,如果有的话,我可以将它包装在一个静态类中并像这样调用它:mFormattedTextField.setFormatterFactory(SomeStaticClass.getRegexFormatFactory("^(\\d{1,}h)(\\s([0-5])?[0-9]m)?$"));查看我的previousquestion更多背景:"我想使用JFormattedTextField来允许用户将持续时间值输入
我正在尝试创建一个只接受24小时制的JFormattedTextField。我非常接近解决方案,但有一种情况下以下代码示例不起作用。如果您输入时间“222”并从该字段更改焦点,时间将更正为“2202”。我希望它只接受完整的4位24小时时间。这段代码几乎在所有情况下都可以正常工作,除了我刚才提到的那个。有什么建议吗?publicstaticvoidmain(String[]args)throwsParseException{DateFormatdateFormat=newSimpleDateFormat("HHmm");dateFormat.setLenient(false);DateF
我知道您可以将格式传递给JFormattedTextField构造函数,但是您将如何在运行时更改格式化程序?例如,我有一个应该格式化为整数值的字段,但是当某个组合框的值发生更改时,现在该字段应该采用浮点值。 最佳答案 您可以调用setFormatterFactory(JFormattedTextField.AbstractFormatterFactory)在你的对象上。你可以这样使用它://Definethenumberfactory.NumberFormatnf=NumberFormat.getIntegerInstance();
我需要在jTable中显示精确到小数点后两位的数字。为此,我创建了一个自定义单元格编辑器:publicclassNumberCellEditorextendsDefaultCellEditor{publicNumberCellEditor(){super(newJFormattedTextField());}publicComponentgetTableCellEditorComponent(JTabletable,Objectvalue,booleanisSelected,introw,intcolumn){JFormattedTextFieldeditor=(JFormattedT
我在我的程序中使用了一些JFormattedTextFields。出于某种原因,当单击文本字段后文本字段获得焦点时,插入符号位置总是跳到左侧(位置0)。我希望插入符最终出现在用户点击的位置。因此,如果我在两位数之间单击,则插入符号应位于这两位数之间。所以我实现了一个FocusListener,它将获取点击位置并在那里设置插入符号位置。FocusListenerfocusListener=newFocusListener(){publicvoidfocusGained(FocusEventevt){JFormettedTextFieldjftf=(JFormattedTextField)
如何禁止输入除数字以外的任何符号到JTextField? 最佳答案 选项1)将JTextField更改为JFormattedTextField,如下所示:try{MaskFormattermascara=newMaskFormatter("##.##");JFormattedTextFieldtextField=newJFormattedTextField(mascara);textField.setValue(newFloat("12.34"));}catch(Exceptione){...}选项2)从键盘捕获用户的输入,如下所示
我有一个JFormattedTextField和一个带有Locale.US的NumberFormat。所以小数分隔符是点,分组分隔符是逗号。现在,我在此文本字段中键入字符串“1,23”并将焦点移至另一个组件。我希望字符串消失(就像我键入“a”而不是“1,23”时那样),因为在使用Locale.US时它显然不是数字的有效表示形式。但文本字段中的文本改为“123”。这是因为使用的NumberFormat在解析时并不严格,只是忽略了逗号。问题:在这种情况下,我如何告诉NumberFormat抛出一个ParseException,以便在将焦点移动到另一个组件?测试代码:JDialogdialo
我的JFrame对象上有两个JFormattedTextField对象。我想通过这些JFormattedTextField对象的值进行基本数学运算(加法)。我希望它发生在焦点丢失第一个或第二个文本字段时。但是当“focusLost()”时,事件没有得到最后一个值,它得到了以前的值。例如;tf1一开始是0,tf2是0。我将2写入tf1,当focusLost()时,结果(tf1+tf2)仍然为0。当我更改其中任何一个时,结果变成2(之前的值)如何获取focusLost的最新值?这是我的代码:JFormattedTextFieldtf1,tf2;NumberFormatformat=Numb
1)如何在不使用插入符或焦点包裹到invokeLater()的情况下将Cursor设置为0位置(可以通过使用@camickrFormattedTextFieldTips轻松解决),有人知道另一种方法吗2)HowtoresetFormatter有时(通过键盘上的TAB提升焦点),重置不起作用并且在focusLost(空字段)Formatter返回/重新生成的字符或字符串返回(最后知道在setText("");之前,Note:knowcodeorfollowingcodeisonlythisway,关于如何从OTN重置Formatter,但是他们可怕的搜索规则....,只有代码(Jeane
我的程序中有一个jFormattedTextField,当jFormattedTextField值被有效更改时,我需要更新jLabel的文本。实际上jFormattedTextField得到一个数字,jLabel显示这个数字和另一个数字之间的差异。我目前通过监听jFormatted文本的“FocusLost”事件来做到这一点。我该怎么做? 最佳答案 为属性“value”注册一个PropertyChangeListener到formattedFieldPropertyChangeListenerl=newPropertyChangeL