java - 必须单击 JFormattedTextField 才能格式化其内容?

标签 java swing jformattedtextfield

我有一个 JFormattedTextField,应该显示 4 位小数。

jftSourceWidth.setText("0.0000");
jftSourceWidth.setHorizontalAlignment(SwingConstants.CENTER);
jftSourceWidth.setBounds(51, 69, 57, 20);
jftSourceWidth.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new     javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.0000"))));
pnSource.add(jftSourceWidth);

当表单加载时,它会从某处给出一个值(使用 setText()),并且不会对其进行格式化。例如,它将显示 1.0 而不是 1.0000

现在这是奇怪的(?)部分...如果我点击它,那么一旦我点击其他任何地方,格式化程序就会启动并将其格式化为 4 位小数。

如何在不点击它的情况下对其进行格式化?????????

谢谢!

最佳答案

一个可能的原因是,如果您在设置 JFormattedTextField 的格式说明符之前设置了 JFormattedTextField 的文本。如果这样做,您可能会丢失文本。考虑在您给 JFormattedTextField 提供格式化程序之后设置它的文本。所以代替这个:

jftSourceWidth.setText("0.0000");
jftSourceWidth.setHorizontalAlignment(SwingConstants.CENTER);
jftSourceWidth.setBounds(51, 69, 57, 20);
jftSourceWidth.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new     javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.0000"))));
pnSource.add(jftSourceWidth);

这样做:

//jftSourceWidth.setText("0.0000");  // not here
jftSourceWidth.setHorizontalAlignment(SwingConstants.CENTER);
// jftSourceWidth.setBounds(51, 69, 57, 20); // don't do this -- use layout managers instead
jftSourceWidth.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
         new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.0000"))));
pnSource.add(jftSourceWidth);

// **** set the text here ***
jftSourceWidth.setText("0.0000");

另外,您需要避免使用 null 布局和 setBounds,因为这会导致创建难以增强的 GUI。

请注意,如果这不能解决您的问题,请考虑创建并发布 minimal example program .

关于java - 必须单击 JFormattedTextField 才能格式化其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840199/

相关文章:

java - JFormattedTextField 问题

java - 我们如何测试 JFormattedTextField 是否为空?

java - 嵌套 PreparedStatements 的最佳实践是什么?

java - Spring 4/Spring 社交 - PageNotFound - 在 DispatcherServlet 中未找到带有 URI 的 HTTP 请求的映射

java - fatal error :sorry, 太多客户端已从数据库获取大量查询

java - Java 中的进度条

java - 初学者...坚持如何在 Java 中使用 FormattedFields 插入日期

java - 尝试使用此代码将 char 数组转换为 Java 中的整数数组

java - 无法弄清楚如何按这些条件对列表进行排序

java - 似乎无法让现有的 JPanel 添加更多的 JPanel