概要

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デスクトップのプロパティ変更と連動している?
    • hotTrackingOnはメニューバーのロールオーバーにも使用されている
      • "InternalFrame.titleButtonToolTipsOn", hotTrackingOn,
      • "MenuBar.rolloverEnabled", hotTrackingOn,
  • InternalFrame.titleButtonToolTipsOn: false
    • WindowsLookAndFeel以外ではInternalFrame.titleButtonToolTipsOnは設定されておらずnullになるのでデフォルトはfalseとなる
    • MetalLookAndFeelNimbusLookAndFeelではこの設定は無視されて常にJInternalFrameのタイトルバーに配置された閉じる、最大化、最小化JButtonJToolTipは表示される
    • MotifLookAndFeelではこの設定は無視されて常にJInternalFrameのタイトルバーに配置された最大化、最小化JButtonJToolTipは非表示になる

参考リンク

コメント