有人可以向我解释为什么getValue()函数总是返回null吗?如果我使用getText()而不是getValue(),那么一切都很完美,但是我想要的是值而不是文本。我可以将其转换为整数,但是我认为这不是最好的方法。

public class Test {
    public static void main(String[] args) {

        JFrame jf = new JFrame("test jftf");
        jf.setSize(100, 100);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        JFormattedTextField jftf = new JFormattedTextField(NumberFormat.getIntegerInstance());
        jftf.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyPressed(KeyEvent e) {
            }

            @Override
            public void keyReleased(KeyEvent e) {
                System.out.println(jftf.getValue());
            }

        });
        jf.add(jftf);
    }

}

最佳答案

如果您依靠getValue()方法,则需要确保已提交当前的编辑。您可以通过调用方法commitEdit()来执行此操作,否则可能无法获得所需的值:

@Override
public void keyReleased(KeyEvent e) {
    //Forces the current value to be taken from the AbstractFormatter
    //and set as the current value:
    try {
        jftf.commitEdit();
    } catch (ParseException e1) {
        //Handle possible parsing error...
    }
    System.out.println(jftf.getValue());
}

10-06 06:21