Ввод в JTextField с использованием кнопок - Java
Формулировка задачи:
Я хочу реализовать ввод текста в определённое поле JTextField(их два) с помощью кнопок. IsFocusOwner() не работает, т.к. я ввожу текст не с клавиатуры, а используя кнопки, к которым и переходит курсор.
Решение задачи: «Ввод в JTextField с использованием кнопок»
textual
Листинг программы
public static void main(final String... args) throws Exception {
final JFrame f = new JFrame();
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
final Container cp = f.getContentPane();
cp.setLayout(new FlowLayout());
final JTextField t1 = new JTextField();
final JTextField t2 = new JTextField();
final Component[] cmp = new Component[1];
final FocusListener focusListener = new FocusAdapter() {
@Override
public void focusGained(final FocusEvent e) {
cmp[0] = e.getComponent();
}
};
t1.addFocusListener(focusListener);
t2.addFocusListener(focusListener);
final JLabel l1 = new JLabel();
final JLabel l2 = new JLabel();
final JButton b = new JButton("clickme");
b.addActionListener(e -> {
l1.setText(String.format("t1 is %sfocused", t1 == cmp[0] ? "" : "not "));
l2.setText(String.format("t2 is %sfocused", t2 == cmp[0] ? "" : "not "));
});
final Dimension size = t1.getPreferredSize();
size.width = 150;
t1.setPreferredSize(size);
t2.setPreferredSize(size);
cp.add(t1);
cp.add(t2);
cp.add(b);
cp.add(l1);
cp.add(l2);
f.setSize(new Dimension(170, 180));
f.setVisible(true);
}