Есть ли в Swing элегантный способ узнать, есть ли какие-либо подсказки, отображаемые в данный момент в моем фрейме?
Я использую пользовательские всплывающие подсказки, поэтому было бы очень легко установить флаг в моем методе createToolTip()
, но я не вижу способа узнать, когда всплывающая подсказка исчезла.
ToolTipManager
имеет хороший флаг для этого, tipShowing, но, конечно, это private
, и они, похоже, не предлагают способ добраться до него. hideWindow()
не вызывает компонент всплывающей подсказки (что я могу сказать), поэтому я не вижу пути туда.
У кого-нибудь есть хорошие идеи?
Обновление: я пошел с отражением. Вы можете увидеть код здесь:
private boolean isToolTipVisible() {
// Going to do some nasty reflection to get at this private field. Don't try this at home!
ToolTipManager ttManager = ToolTipManager.sharedInstance();
try {
Field f = ttManager.getClass().getDeclaredField("tipShowing");
f.setAccessible(true);
boolean tipShowing = f.getBoolean(ttManager);
return tipShowing;
} catch (Exception e) {
// We'll keep silent about this for now, but obviously we don't want to hit this
// e.printStackTrace();
return false;
}
}