• category: swing folder: InternalFrameTitleButtonToolTipsOn title: JInternalFrameのTitleButtonでJToolTipを表示するかを切り替える tags: [UIManager, JInternalFrame, JButton, JToolTip, WindowsLookAndFeel] author: aterai pubdate: 2023-02-13T01:33:32+09:00 description: JInternalFrameのタイトルバーに配置された閉じる、最大化、最小化JButtonでJToolTipの表示・非表示を切り替えます。 image: https://drive.google.com/uc?id=1SLM6oYpp38PKBED36pr5cj4VOAeXEq4I

概要

JInternalFrameのタイトルバーに配置された閉じる、最大化、最小化JButtonJToolTipの表示・非表示を切り替えます。

サンプルコード

String key = "InternalFrame.titleButtonToolTipsOn";
boolean def = UIManager.getLookAndFeelDefaults().getBoolean(key);
JCheckBox check = new JCheckBox(key, def) {
  @Override public void updateUI() {
    super.updateUI();
    setOpaque(false);
    boolean b = UIManager.getLookAndFeelDefaults().getBoolean(key);
    setSelected(b);
    UIManager.put(key, b);
    SwingUtilities.updateComponentTreeUI(desktop);
  }
};
check.addActionListener(e -> {
  JCheckBox checkBox = (JCheckBox) e.getSource();
  UIManager.put(key, checkBox.isSelected());
  SwingUtilities.updateComponentTreeUI(desktop);
});
View in GitHub: Java, Kotlin

解説

  • InternalFrame.titleButtonToolTipsOn: true
    • WindowsLookAndFeelのデフォルト
    • WindowsLookAndFeel.javaObject hotTrackingOn = new WindowsDesktopProperty("win.item.hotTrackingOn", true);Windowsデスクトップのプロパティ変更と連動してメニューバーのロールオーバーとも連動している?
      • "InternalFrame.titleButtonToolTipsOn", hotTrackingOn,
      • "MenuBar.rolloverEnabled", hotTrackingOn,
  • InternalFrame.titleButtonToolTipsOn: false
    • WindowsLookAndFeel以外ではInternalFrame.titleButtonToolTipsOnは設定されておらずnullになるのでデフォルトはfalseとなる
    • MetalLookAndFeelNimbusLookAndFeelではこの設定は無視されて常にJInternalFrameのタイトルバーに配置された閉じる、最大化、最小化JButtonJToolTipは表示される
    • MotifLookAndFeelではこの設定は無視されて常にJInternalFrameのタイトルバーに配置された最大化、最小化JButtonJToolTipは非表示になる

参考リンク

コメント