사용자 지정 스윙 구성 요소와 JTextfield 및 JButton이있는 JFrame이 있습니다. JButton이 기본 버튼으로 설정되었습니다. 포커스가있는 텍스트 필드에 들어가면 Enter 키를 누르면 버튼이 트리거됩니다. 하지만 순간에 enter 버튼을 누르면 포커스 버튼의 맞춤 구성 요소가 실행되지 않습니다. 이 사용자 지정 구성 요소에서 특별 이벤트를 않기 때문에사용자 지정 구성 요소에서 포커스가있을 때 기본 단추가 키를 입력하지 않습니다.
package org.laki.test;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
public class TestFrame extends JFrame {
private JTextField textField;
public TestFrame() {
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
textField = new JTextField();
getContentPane().add(textField);
textField.setColumns(10);
ComboBox comboBox = new ComboBox();
comboBox.addItem("lakshman");
comboBox.addItem("tharindu");
comboBox.addItem("Ishara");
getContentPane().add(comboBox);
JButton btnNewButton = new JButton("Test");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println("enter is hitting...!!!");
}
});
getContentPane().add(btnNewButton);
this.rootPane.setDefaultButton(btnNewButton);
}
private class ComboBox extends JComboBox<String>
{
private static final long serialVersionUID = 10000012219553L;
@Override
public void processKeyEvent(final KeyEvent event)
{
if ((event.getKeyCode() == KeyEvent.VK_DOWN) ||
(event.getKeyCode() == KeyEvent.VK_SPACE))
{
doSomthing();
}
else if(event.getKeyCode() == KeyEvent.VK_ENTER)
{
//I added this to capture the enter event
}
}
}
public static void main(String[] args) {
TestFrame testframe = new TestFrame();
testframe.setSize(300, 400);
testframe.setVisible(true);
}
}
나는 processKeyEvent를 방법을 제거 할 수 없습니다. 사용자 지정 구성 요소에서 포커스를 맞추는 동안 enter 키를 눌러 단추를 튕기려면 어떻게해야합니까?
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –
그리고 이런 식으로 어떤 이유인지 설명이 추가되었습니다. – mKorbel
에 SSCCE – lakshman