Как выбрать текстовое поле при нажатии для ввода с клавиатуры
Интерфейс
Выше изображение показывает интерфейс, который я пытаюсь реализовать. Панель входа и панель клавиатуры должны как-то работать вместе, поэтому всякий раз, когда я нажимаю на выбранное текстовое поле, я могу использовать клавиатуру для ввода требуемого ввода.
При правильном вводе данных панель входа изменится на другую панель с другими текстовыми полями, поэтому клавиатуре также придется работать с ними.
Есть идеи? Заранее спасибо!
3 ответа
Вы можете продлить TextAction
создать Action
быть разделенным каждой кнопкой. TextAction
позволяет получить доступ к последнему выделенному текстовому компоненту:
Action numberAction = new TextAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
JTextComponent input = getFocusedComponent();
input.replaceSelection(e.getActionCommand());
}
};
JButton button1 = new JButton("1");
button1.addActionListener( numberAction );
JButton button2 = new JButton("2");
button2.addActionListener( numberAction );
...
Вам необходимо создать отдельное действие для кнопки "Очистить".
Лучший способ достичь ИМО был бы setFocusable(false)
на всех ваших JButton, так что только два поля ввода могут быть владельцами фокуса. У вас также должен быть FocusListener для этих двух текстовых полей, чтобы вы знали, нажимает ли пользователь кнопку, куда должно идти это число
Хм. Вы могли бы иметь JTextField для отслеживания текущего выбранного текстового поля, а затем добавить FocusListeners в ваши JTextFields, чтобы обновить текущее выбранное текстовое поле, когда лиса добывается или теряется.
Что-то вроде этого:
JTextField currentText;
final JTextField textField = new JTextField("Ayy");
textField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
//Your code here
currentText = textField;
}
@Override
public void focusLost(FocusEvent e) {
//Your code here
currentText = null;
}
});