有人可以向我解释为什么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());
}