2016-04-28 4 views
0

интерфейсаКак выбрать Textbox на Нажмите для ввода Клавиатура Выходного

http://i.stack.imgur.com/cAvOJ.png

Выше изображение показывает интерфейс я пытаюсь реализовать. панели входа и панели клавиатуры должны как-то работать вместе, поэтому всякий раз, когда я нажимаю на выбранное текстовое поле, я могу использовать клавиатуру для ввода необходимого ввода.

При правильной записи сведений панель ввода изменится на другую панель с другими текстовыми полями, чтобы клавиатура также работала с ними.

Любые идеи? Заранее спасибо!

+1

, так что вы хотите знать, как реализовать клавиатуру для вашего приложения. – Priyamal

+0

(1-) Что такое текстовое поле? Нет класса Swing с таким именем. Мне кажется, что вы используете JTextField. Так что будьте конкретны, задавая вопрос! – camickr

+0

Да, извините, первый раз, используя это, и я все еще новичок в java. Да JTextField –

ответ

1

Вы можете продлить 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); 
... 

Вам нужно будет создать отдельный Action для кнопки «Clear».

+0

Да, вот что я искал! Спасибо :) –

0

Лучший способ достичь ИМО - setFocusable(false) на всех ваших JButtons, поэтому только два поля ввода могут быть владельцами фокуса. У вас также должен быть FocusListener для этих двух текстовых полей, чтобы вы знали, что пользователь нажимает кнопку, где этот номер должен идти

0

Хмм. У вас может быть JTextField, чтобы отслеживать текущее выбранное текстовое поле, а затем добавлять FocusListeners в JTextFields для обновления текущего выделенного текстового поля, когда foxus получен или потерян.

Что-то вроде этого:

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; 
    } 
});