テキスト フィールドの値が常に正であることを確認するために、FocusListener を使用するアプリケーションを作成しました。ユーザーが負の値を入力し、[Tab] キーをクリックしてフォーカスをテキスト フィールドから移動すると、結果の値が正になるように値に -1 が乗算されます。しかし、アプリケーションを実行しても、テキスト フィールドは変化しませんでした。何が間違っていたのかわかりません。助けていただければ幸いです。
これが私のコードです:
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();
}
}