我的应用中的所有 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 底部的两个大文本区域的工具提示未关闭(在导航器 Pane 中突出显示) 。这两个按钮(在导航 Pane 中用绿色标记)已正确处理。这些项目应该通过第一次调用 tipsOff
进行处理,该调用处理 gui.getContentPane())
。
(我添加了下面两行来尝试纠正问题。不。)
tipsOff(gui.scrOutput);
tipsOff(gui.scrScratch);
(也尝试过这个。不行。)
tipsOff(gui.txaOutput);
tipsOff(gui.txaScratchwork);
如何优雅地(即,假设我有很多文本区域,而不仅仅是 2 个)关闭文本区域工具提示?
附注除了第一次调用 tipsOff
之外,我都收到消息 Access of private field of another object
。由于手头任务的性质,我不在乎。
最佳答案
使用 ToolTipManager.sharedInstance().setEnabled( false )
禁用 Swing 应用程序中的所有工具提示。
与您的方法相比的优势
- 它有效:-)
- 您没有清除工具提示,因此很容易再次重新启用它们。例如,如果您想向用户提供 UI 来激活/停用工具提示,则此方法将起作用。在您的方法中,您必须恢复之前清除的所有工具提示,这很难以通用方式完成。
关于java - 无法关闭滚动 Pane 内文本区域的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432985/