는, 그 버튼을 같이 다른 버튼이 기본값으로 설정되어 있는지 여부를 클릭 :Nimbus L & F를 수정하여 Enter 키를 누를 때 기본 단추를 활성화하는 방법은 무엇입니까? 버튼에 포커스가있는 경우 하나가 Enter 키를 누를 때 후광의 L & F에서
getRootPane().setDefaultButton(myButton);
또한, 바인딩 키 사용 작동하지 않습니다
Action clickDefault = new AbstractAction("clickDefault") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Got Here");
getRootPane().getDefaultButton().doClick();
}
};
InputMap im = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke enter = KeyStroke.getKeyStroke("ENTER");
im.put(enter, "defaultButton");
getRootPane().getActionMap().put("defaultButton", clickDefault);
나는 결코조차 볼 수있는 내가 같은 다른 키 스트로크 (keystroke)에 결합하면 예상대로 "P는"이 기능하지만, 메시지 "여기있어." 따라서이 이벤트 처리기에 도착하기 전에 Enter 키가 캡처 된 것 같습니다.
나는 또한되는 UIDefaults를 변경 시도 :
im = (InputMap) UIManager.getDefaults().get("Button.focusInputMap");
im.put(enter, null);
im.put(enterRelease, null);
도 실패. 누구든지이 아이디어를 어떻게 성취 할 수 있습니까? (물론
---
업데이트은 ---
추가 조사하는 JButton의 InputMap를가 { "발표": "프레스", "발표는 ENTER" "Enter 키를 눌렀을"}이 포함되어 있는지 밝혀 SPACE에 대한 바인딩). 문제의 컴퍼넌트의 키 바인드가 RootPane의 우선 순위보다 높습니다. 문제를 해결하는 코드는 내 대답을 참조하십시오.
불행히도 Nimbus에서는 작동하지 않습니다. 실제로 Nimbus Defaults 페이지 : [link] (http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html)는 Button.defaultButtonFollowsFocus가 False로 설정되었음을 나타냅니다. 나는 또한 그것이 사실인지 확인하기 위해 getDefaults()를 사용하여 검사를 수행했다. – acarlow