Я создал приложение, которое использует FocusListener, чтобы убедиться, что значение text 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