具有或不具有提交的JFormattedTextField getValue,具体取决于不同的侦听器

时间:2016-07-15 17:09:42

标签: java actionlistener commit keylistener

有人可以解释一下为什么这两个代码没有给出相同的结果吗?

public static void main(String[] args) {

    JFrame jf = new JFrame("test jftf"); 
    JFormattedTextField jftf = new JFormattedTextField(NumberFormat.getIntegerInstance()); 
    jftf.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println(jftf.getValue());
        }

    });
    jf.add(jftf); 
    jf.setSize(100, 100);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setVisible(true); 
}

public static void main(String[] args) {

    JFrame jf = new JFrame("test jftf"); 
    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); 
    jf.setSize(100, 100);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setVisible(true); 
}

第一个工作正常,但第二个需要一个提交语句才能使用getValue()。我认为原因是这两个听众的实现方式不同,但我不能多说,因为我不知道它们是如何实现的。

0 个答案:

没有答案