데스크톱 응용 프로그램을 개발 중입니다. 이 응용 프로그램에서 내가 로그인 작업 등을 위해 가상 키보드/numberpad를 사용할 필요가자바에서 가상 번호 패드 만들기
나는이 같은 JFrame의를 만들었습니다버튼 '생성 코드는
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");
}
}
하지만 jpasswordfield의 gettext 메서드가 전달됩니다. 사용하지 않는 것이 좋습니다. 나는 모든 버튼에 대해 actionperformed 메소드를 작성하고 각 버튼의 동작에서 "KeyEvent.VK_"를 사용하는 또 다른 아이디어가 있습니다. 그러나, 나는 그것이 그것을하는 적당한 방법이라고 생각하지 않는다. 무엇을 추천하나요?
각 버튼은 배열이나리스트에 char을 추가해야하는데,하려는 일은 비밀번호의'String'을 생성하지 않습니다. 'JPasswordField'의'Document'에 내용을 직접 삽입해야 할 수도 있습니다. – MadProgrammer
버튼을 클릭 할 때 passwordfield에 char을 추가하려면 문자열을 사용해야하는 'passwordfield.settext'메서드를 사용해야했습니다. 언급 한 JPasswordField의 문서에 직접 삽입하는 다른 방법은 무엇입니까? – Emre
아니요, Document # insertString을 사용하여 각 문자 (개별 String)를 – MadProgrammer