Java SE7 getpercent实例

标签 java swing number-formatting

我有一个程序,它在使用 NumberFormat.getPercentInstance 格式化的 JFormattedTextField 上使用 actionPerformed 监听器。设置如下:

    percentFormat = NumberFormat.getPercentInstance();
    txtRPI = new JFormattedTextField(percentFormat);
    percentFormat.setMinimumFractionDigits(1);
    percentFormat.setMaximumIntegerDigits(2);
    GridBagConstraints gbc_txtRPI = new GridBagConstraints();
    gbc_txtRPI.insets = new Insets(0, 0, 5, 5);
    gbc_txtRPI.gridx = 3;
    gbc_txtRPI.gridy = 2;
    gbc_txtRPI.anchor = GridBagConstraints.FIRST_LINE_START;
    txtRPI.setValue(objParams.getRPI());
    panTop.add(txtRPI, gbc_txtRPI);
    txtRPI.setColumns(10);
    txtRPI.addActionListener(new ActionListener () {
        public void actionPerformed(ActionEvent e) {
            objParams.setRPI((double)txtRPI.getValue());
        }
    });

这工作得很好,直到我在带有表格的不同 JPanel 上添加了以下代码:

public class MyPercentRender extends DefaultTableCellRenderer {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = NumberFormat.getPercentInstance();

public Component getTableCellRendererComponent(
    JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    // First format the cell value as required
    formatter.setMinimumFractionDigits(1);
    formatter.setMaximumFractionDigits(2);
    formatter.setMaximumIntegerDigits(2);
    value = formatter.format((Number)value);

    // And pass it on to parent class

    return super.getTableCellRendererComponent(
    table, value, isSelected, hasFocus, row, column );
    }

}

添加后,第一个字段的 actionListener 停止被触发,因此我无法保存该值。

有人以前见过这种行为并知道发生了什么吗?

<小时/>

感谢您的回复。我已经把静电去掉了。就事件派发线程的一部分而言,它是。

我又尝试了一些东西,看来百分比实例是一个转移注意力的东西。即使我把它拿出来, Action 监听器也不会被解雇。我在创建后检查了该对象,并且监听器与其中之一一起注册 Class<T> .

我用过这个代码

    txtRPI = new JFormattedTextField();
    GridBagConstraints gbc_txtRPI = new GridBagConstraints();
    gbc_txtRPI.insets = new Insets(0, 0, 5, 5);
    gbc_txtRPI.gridx = 3;
    gbc_txtRPI.gridy = 2;
    gbc_txtRPI.anchor = GridBagConstraints.FIRST_LINE_START;
    txtRPI.setValue(objParams.getRPI());
    txtRPI.setColumns(10);
    txtRPI.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            objParams.setRPI((double)txtRPI.getValue());
        }
    });
    panTop.add(txtRPI, gbc_txtRPI);
    this.add(panTop, BorderLayout.PAGE_START);

但结果还是一样。我的所有其他 Action 监听器(在按钮和组合框中)都可以工作。有关于格式化文本的内容吗?

最佳答案

查看片段时会出现两个相关问题:

关于Java SE7 getpercent实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25789001/

相关文章:

java - Swing L&F - 导入和实现

java - JPanel 中的多个组件未显示

java - 附有按钮点击的事件

swing - scala.swing 框等效项

javascript - 带有 accounting.js 格式的输入框不允许我输入小数

java - 如何使 maven-surefire-plugin 与 Eclipse 中的 TestNG 配合使用

java - 使用 Android 前台服务为 MediaPlayer 创建通知

Java Maven 项目 - 错误 R10(启动超时)-> Web 进程在启动后 90 秒内无法绑定(bind)到 $PORT

css - 使用 CSS 格式化数字(小数位、千位分隔符、本地化等)

hex - RFID算法获取卡号