TITLE:JToolTipにJButtonのMnemonicを表示

Usage: #tags(tags)
Posted by at 2010-11-15

JToolTipにJButtonのMnemonicを表示

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

  • &jnlp;
  • &jar;
  • &zip;
MnemonicToolTip.png

サンプルコード

class MnemonicToolTip extends JToolTip {
  private final JLabel mnemonicLabel = new JLabel();
  public MnemonicToolTip() {
    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, Kotlin

解説

    • setToolTipTextで直接Mnemonicを追加
    • JToolTipにBorderLayoutを設定して、Mnemonic用のJLabelを追加

参考リンク

コメント