Я разрабатываю настольное приложение. В этом приложении я должен использовать виртуальную клавиатуру/для входа в цифровой блок операций и т.д.Создание виртуальной цифровой клавиатуры в java
и код создания кнопок является
numberButtons = new JButton[10];
for(int i = 0; i < numberButtons.length; i++) {
numberButtons[i] = new JButton(String.valueOf(i));
numberButtons[i].setFont(new java.awt.Font("Open Sans", 0, 14));
numberButtons[i].setPreferredSize(new java.awt.Dimension(100, 50));
numberButtons[i].addActionListener(new ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
numberButtonActionPerformed(evt);
}
});
numberPanel.add(numberButtons[i]);
}
и действия метод:
private void numberButtonActionPerformed(ActionEvent evt) {
String currentPassword = ((JButton) evt.getSource()).getText();
passwordField.requestFocus();
passwordField.setText(passwordField.getText() + currentPassword);
if (Arrays.equals(pass, passwordField.getPassword())) {
System.out.println("Correct");
}
}
, но отправляется метод gettext jpasswordfield. Не рекомендуется использовать. У меня есть другая идея написать actionperformed метод для каждой кнопки и использовать «KeyEvent.VK_» в действии каждой кнопки. Однако я не думаю, что это правильный способ сделать это. Чтобы вы посоветовали?
Каждая кнопка должна добавить символ в массив или список, что вы пытаетесь сделать, не генерирует 'String' пароля. Возможно, вам нужно будет вставить содержимое непосредственно в '' Документ 'JPasswordField' – MadProgrammer
Так как я хочу добавить символ в поле пароля при нажатии кнопки, мне нужно было использовать метод passwordfield.settext, который мне нужен для использования строки. Каков другой способ вставить прямо в документ JPasswordField, о котором вы упомянули? – Emre
Нет, вам нужно использовать Document # insertString, вставляя каждый символ (как отдельную строку) в документ – MadProgrammer