我已经创建了一个使用的FocusListener确保文本fieid的价值始终是正的应用程序。当用户输入负值,然后单击“tab”键将焦点从文本字段移开时,该值将乘以-1,以使结果值为正值。但是,当我运行应用程序时,文本字段没有改变。我不确定我做错了什么,并会很感激任何帮助。的FocusListener上的JTextField不工作
这里是我的代码:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class AlwaysPositive extends JFrame implements FocusListener {
JTextField posField = new JTextField("30",5);
public AlwaysPositive() {
super("AlwaysPositive");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
JTextField posField = new JTextField("30",5);
JButton ok= new JButton("ok");
posField.addFocusListener(this);
pane.add(posField);
pane.add(ok);
add(pane);
setVisible(true);
}
public void focusLost(FocusEvent event) {
try {
float pos = Float.parseFloat(posField.getText());
if (pos < 0)
pos = pos*-1;
posField.setText("" + pos);
} catch (NumberFormatException nfe) {
posField.setText("0");
}
}
public void focusGained(FocusEvent event) {
}
public static void main(String[] arguments) {
AlwaysPositive ap = new AlwaysPositive();
}
}
今天,我有'InputVerifier' [这里](http://stackoverflow.com/questions/19565839/input-verifier-effect-not-work-by-click-just-work-by-解释的问题制表键/ 19566591#19566591)。虽然问题不在于验证者,而是在于潜在的用例和设计。你介意看看吗? – Sage
非常感谢您的详细解释! – user2533006