Jbutton 툴팁에 키보드 단축키를 표시해야한다는 요구 사항이 있습니다. 툴팁에 동작 맵과 모든 필수 코드를 추가했지만 단축키는 Metalic 모양과 느낌으로 만 표시됩니다. 우리는 응용 프로그램의 모양과 느낌을 metalic에서 시스템 또는 다른 모양과 느낌으로 변경하고, 단축키는 더 이상 도구 팁에 표시되지 않습니다.jbutton의 단축키 툴팁이 matalic 이외의 다른 테마에 표시되지 않음
다음은 바로 가기가있는 2 개의 J 버튼을 보여주는 바로 가기입니다. 바로 가기가 멋진 모양과 느낌으로 제대로 표시되지만, 시스템이나 Motif와 같은 다른 모양과 느낌을 사용하면 바로 가기가 J 버튼 도구에 표시되지 않습니다. 팁.
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String args[]) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
// UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JFrame frame = new JFrame("KeyStroke Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton buttonA = new JButton("a Button");
buttonA.setMnemonic('a');
frame.setVisible(true);
buttonA.setToolTipText("a Button");
final JButton buttonB = new JButton("another Button");
buttonB.setMnemonic('b');
frame.add(buttonA);
frame.add(buttonB);
buttonB.setToolTipText("another Button");
Action action = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(buttonA)) {
System.out.println("buttonA");
}
if (e.getSource().equals(buttonB)) {
System.out.println("buttonB");
}
}
};
buttonA.addActionListener(action);
buttonB.addActionListener(action);
// buttonA ("ALT+A");
buttonA.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.ALT_MASK),
"left_button_pressed");
buttonA.getActionMap().put("left_button_pressed", action);
// buttonB ("CTRL+Shift+A");
buttonB.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK
| InputEvent.SHIFT_MASK), "right_button_pressed");
buttonB.getActionMap().put("right_button_pressed", action);
frame.setLayout(new GridLayout(2, 2));
frame.setSize(400, 200);
}
}
이러한 툴팁, 액션 맵 등을 사용하여 구성 요소의 짧은 코드 예를 게시하여 직접 볼 수 있도록하십시오. – user1803551
예제가 추가되었습니다. 다른 모양과 느낌으로 예제를 테스트 해주십시오. 단축키는 Metalic 모양과 느낌으로 만 표시되지만 다른 모양으로는 표시되지 않습니다. – Gaurav
예를 들어 주셔서 감사합니다. 메소드의 끝에서'frame.setVisible (true)'가 호출되어야한다는 것에주의하십시오. – user1803551