Summary
JButtonにMnemonicが設定されている場合、JToolTipにそれを表示します。
Screenshot

Advertisement
Source Code Examples
class MnemonicToolTip extends JToolTip {
private final JLabel mnemonicLabel = new JLabel();
public MnemonicToolTip() {
super();
setLayout(new BorderLayout());
mnemonicLabel.setForeground(Color.GRAY);
mnemonicLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
add(mnemonicLabel, BorderLayout.EAST);
}
@Override public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
if (mnemonicLabel.isVisible()) {
d.width += mnemonicLabel.getPreferredSize().width;
}
return d;
}
@Override public void setComponent(JComponent c) {
if (c instanceof AbstractButton) {
AbstractButton b = (AbstractButton) c;
int mnemonic = b.getMnemonic();
if (mnemonic > 0) {
mnemonicLabel.setVisible(true);
mnemonicLabel.setText("Alt + " + KeyEvent.getKeyText(mnemonic));
} else {
mnemonicLabel.setVisible(false);
}
}
super.setComponent(c);
}
}
View in GitHub: Java, KotlinDescription
- 上
JButtonにPropertyChangeListenerを設定してMnemonicが変更されたらJButton#setToolTipText(...)メソッドで直接Mnemonicを変更
- 下
JToolTipにBorderLayoutを設定してMnemonic用のJLabelを表示するJToolTipを作成してJButtonに設定