Tag: jformattedtextfield

使JFormattedTextField的行为类似于ATM输入

我想知道是否有一个JformattedTextField或jtextField表现得像一个atm money输入。 我的意思是你从右到左进入,比如说你输入10你需要再按2个0,这样它就是10.00。 程序从右到左自动输入小数点? 如果未输入2 0,则仅为.10。 这可能吗? 如果我想使用该字符串进行计算,那将如何返回给我? 我尝试了抽象格式化程序,但这样做不太好。 我想用它来输入客户收到的金额。 但要做到白痴certificate。

如何使用JFormattedTextField只允许字母和数字

我有这个代码,无法正确使用MaskFormatter MaskFormatter之外 MaskFormatter formatter = null; try { formatter = new MaskFormatter(“HHHHHHH”); } catch (ParseException e) { e.printStackTrace(); } txtTroll = new JFormattedTextField(formatter); 我需要任何hex字符(0-9,az或AZ)和“H”应该 只给我(0-9,az或AZ),但我错了。 当我输入文字时,只输入大写字母并且输入速度很慢 当我点击txtTroll所有字母都会消失

不知道如何在JFormattedTextField上修复我的PropertyChangeListener

编辑结束后 测试代码和输出 import java.awt.EventQueue; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.text.NumberFormat; import javax.swing.JFormattedTextField; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.text.NumberFormatter; public class Test{ private JFormattedTextField input, input2; private NumberFormatter formatter; private PropertyChangeListener listener; public Test(){ formatter = new NumberFormatter(NumberFormat.getNumberInstance()); input = new JFormattedTextField(formatter); input2 = new JFormattedTextField(formatter); listener = new PropertyChangeListener(){ @Override public void propertyChange(PropertyChangeEvent evt) { […]

JFormattedTextField中严格的24小时时间

我正在尝试创建一个只接受24小时时间的JFormattedTextField。 我非常接近解决方案,但有一个案例,下面的代码示例不起作用。 如果输入时间“222”并从字段中更改焦点,则时间将更正为“2202”。 我希望它只接受一个完整的4位数24小时时间。 除了我刚才提到的那个代码之外,这个代码在几乎所有情况下都可以正常工作。 有什么建议么? public static void main(String[] args) throws ParseException { DateFormat dateFormat = new SimpleDateFormat(“HHmm”); dateFormat.setLenient(false); DateFormatter dateFormatter = new DateFormatter(dateFormat); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFormattedTextField textField = new JFormattedTextField(dateFormatter); frame.add(textField, BorderLayout.NORTH); frame.add(new JTextField(“This is here so you can change focus.”), BorderLayout.SOUTH); frame.setSize(250, 100); frame.setVisible(true); }

如何使用JFormattedTextfield接受字符串之类的名称?

如果我只想接受字母和空格,那么在JFormattedTextField FormatterFactory的因子值是什么。 因为我希望它只接受名字。 喜欢 – John Doe 。

你能链接两个JFormattedTextFields的值吗?

我有一个带有2个JFormattedTextFields的接口,我需要将值(而不仅仅是显示的文本)设置为相同。 理想情况下,它们都应该是可编辑的,其中一个的变化在另一个中被镜像。 我开始只是在两者之间共享一个文档,但很快就遇到了这个问题,即它只链接显示的文本,而不是基础值。 (傻我!) 我没有尝试为“value”属性添加倒数PropertyChangeListeners,因为我希望设置一个无限循环的修改。 我错过了什么吗? 有办法做到这一点吗? 或者我坚持只允许用户编辑两个中的一个并且只在一个方向上传播值? 谢谢!

Readonly JFormattedTextField

假设启用了JFormattedTextField并包含格式化程序,有没有办法让它只读? 使用JTextField ,我们只需要提供一个自定义Document并在那里进行所有控制,但是使用JFormattedTextField我认为事情稍微复杂一点,因为我们不想弄乱它的文档filter。 我真的需要这个function。 那么,有没有办法实现这一目标? 更新:只是我的意见,但似乎JFormattedTextField在这个意义上是如此糟糕的设计,它没有给这个简单的问题留下简单的解决方案。 马科斯

使JFormattedTextField接受超过3位数的小数

我有一个JFormattedTextField应该能够接受超过3位十进制数的双数字。 它接受条目0.001但拒绝0.0001和具有更多十进制数字的数字。 这就是我的代码现在的工作方式: DecimalFormat decimalFormat = new DecimalFormat(“0.0E0”); JFormattedTextField txtfield = new JFormattedTextField(decimalFormat.getNumberInstance(Locale.getDefault())); 如何让我的文本字段接受超过3位十进制数字的数字?

JTextField时间以HH为单位:mm:ss

我估计在一个浮点数中,在几分钟内完成特定任务所需的时间。 如何将它放在JH HH:mm:ss格式的JFormattedTextField中?

NumberFormat解析不够严格

我有一个带有Locale.US的NumberFormat的JFormattedTextField 。 因此小数点分隔符是点,分组分隔符是逗号。 现在我在此文本字段中键入字符串“1,23”并将焦点移动到另一个组件。 我希望字符串消失(就像我输入“a”而不是“1,23”时那样),因为在使用Locale.US时它显然不是数字的有效表示。 但是,文本字段中的文本将更改为“123”。 这是因为在解析时使用的NumberFormat并不严格,只是忽略逗号。 问题 :在这种情况下,如何告诉NumberFormat抛出ParseException ,以便在将焦点移动到另一个组件后文本字段为空? 测试代码: JDialog dialog = new JDialog(); JPanel panel = new JPanel(new BorderLayout()); dialog.getContentPane().add(panel); NumberFormat nf = NumberFormat.getInstance(Locale.US); JFormattedTextField textField = new JFormattedTextField(nf); textField.setText(“1,23”); panel.add(textField, BorderLayout.CENTER); panel.add(new JButton(“focus”), BorderLayout.EAST); dialog.pack(); dialog.setVisible(true); 将焦点从文本字段移动到按钮,文本将更改为“123”。