我的应用程序中的所有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);
}
}
我有一个问题,即gui底部的两个大文本区的工具提示没有关闭(在导航器窗格中突出显示) 。两个按钮(导航窗格中标有绿色)正确处理。这些项目应该通过第一次调用tipsOff
来处理,gui.getContentPane())
处理tipsOff(gui.scrOutput);
tipsOff(gui.scrScratch);
。
(我在下面添加了两行以试图解决问题。不。)
tipsOff(gui.txaOutput);
tipsOff(gui.txaScratchwork);
(也试过这个。不。)
Access of private field of another object
我怎样才能优雅(即假设我有很多文字区域,而不仅仅是2个)关闭文字区域工具提示?
P.S。除了第一次拨打tipsOff
之外,我收到了{{1}}消息。由于手头的任务性质,我不在乎。
答案 0 :(得分:3)
使用ToolTipManager.sharedInstance().setEnabled( false )
停用Swing应用程序中的所有工具提示。
与您的方法相比的好处