JToolTipの表示をウィンドウが非アクティブな場合でも有効にする
Total: 2219, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JToolTipの表示モードをすべてのウィンドウで有効にする、またはアクティブなウィンドウのみに限定するで切り替えます。
Screenshot

Advertisement
Source Code Examples
private static final String TOOLTIP_MODE = "ToolTipManager.enableToolTipMode";
// ...
String allWindows = "allWindows";
JRadioButton radio1 = new JRadioButton(allWindows, Objects.equals(allWindows, mode));
radio1.setToolTipText("ToolTip: " + allWindows);
radio1.addItemListener(e -> UIManager.put(TOOLTIP_MODE, allWindows));
String activeApplication = "activeApplication";
JRadioButton radio2 = new JRadioButton(activeApplication, Objects.equals(activeApplication, mode));
radio2.setToolTipText("ToolTip: " + activeApplication);
radio2.addItemListener(e -> UIManager.put(TOOLTIP_MODE, activeApplication));
View in GitHub: Java, KotlinDescription
allWindowsJFrameなどのウィンドウがアクティブかどうかにかかわらずツールチップ表示は有効- デフォルトはこの
allWindowsでBasicLookAndFeelなどの初期値
activeApplicationJFrameなどのウィンドウがアクティブな場合のみツールチップ表示は有効MetalLookAndFeelとWindowsLookAndFeelの初期値
- ツールチップを表示する前に
ToolTipManager#showTipWindow()メソッド内で毎回UIManager.getString("ToolTipManager.enableToolTipMode")がactiveApplicationかを確認しているので、値の変更はすぐに有効になる - 文字列が
activeApplicationかを比較しているだけなのでnullなどを設定するとデフォルトのallWindowsになる
// @see javax/swing/ToolTipManager.java
String mode = UIManager.getString("ToolTipManager.enableToolTipMode");
if ("activeApplication".equals(mode)) {
KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
if (kfm.getFocusedWindow() == null) {
return;
}
}