Не удается отключить всплывающие подсказки для текстовой области на панели прокрутки
Все компоненты Swing в моем приложении (кроме ярлыков) имеют всплывающие подсказки, которые могут раздражать, когда пользователь знает, что происходит, поэтому у меня есть Preferences
меню, которое позволяет отключить их. Я мог бы назвать каждый компонент и установить его текст подсказки на "" [например, txtPattern.setToolTipText("");
] (и еще 10), но я решил (с помощью SO, которая началась некоторое время назад) написать код, который был бы более элегантным (опыт обучения):
private void tipsOff(Container container){
Component [] c = container.getComponents();
for (Component cc : c)
((JComponent)cc).setToolTipText("");
}
private void mniPrefTooltipsActionPerformed(java.awt.event.ActionEvent evt) {
if(! mniPrefTooltips.isSelected()){
tipsOff(gui.getContentPane());
tipsOff(gui.pnlLetters);
tipsOff(gui.mbrMenuBar);
}
else{
gui.dispose();
gui = new IO();
gui.setVisible(true);
}
}
У меня есть проблема, которая заключается в том, что всплывающие подсказки НЕ отключены для двух больших текстовых областей в нижней части графического интерфейса (выделено на панели навигатора). Две кнопки (отмеченные зеленым на панели навигации) обрабатываются правильно. Эти предметы должны быть обработаны через первый звонок tipsOff
какие процессы gui.getContentPane())
,
(Я добавил две строки ниже, чтобы попытаться исправить проблему. Нет.)
tipsOff(gui.scrOutput);
tipsOff(gui.scrScratch);
(Также попробовал это. Нет.)
tipsOff(gui.txaOutput);
tipsOff(gui.txaScratchwork);
Как я могу элегантно (т.е. предположить, что у меня много текстовых областей, а не только 2) отключить всплывающие подсказки текстовой области?
PS я получаю сообщение Access of private field of another object
для всех, кроме первого звонка tipsOff
, Мне все равно, в связи с характером поставленной задачи.
1 ответ
Использование ToolTipManager.sharedInstance().setEnabled( false )
отключить все подсказки в вашем приложении Swing.
Преимущества по сравнению с вашим подходом
- Оно работает:-)
- Вы не очищаете всплывающие подсказки, поэтому их легко снова включить. Например, если вы хотите предложить пользовательский интерфейс для активации / деактивации подсказок, этот подход будет работать. При вашем подходе вам придется восстанавливать все ранее очищенные всплывающие подсказки, что будет сложно сделать в общем виде.