无法关闭滚动窗格内文本区域的工具提示

时间:2014-10-17 20:28:25

标签: java swing tooltip jscrollpane jtextarea

enter image description here

我的应用程序中的所有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}}消息。由于手头的任务性质,我不在乎。

1 个答案:

答案 0 :(得分:3)

使用ToolTipManager.sharedInstance().setEnabled( false )停用Swing应用程序中的所有工具提示。

与您的方法相比的好处

  • 它有效: - )
  • 您不清除工具提示,因此很容易再次重新启用它们。例如,如果您想为用户提供UI以激活/取消激活工具提示,则此方法将起作用。在您的方法中,您必须恢复之前清除的所有工具提示,这很难以通用的方式进行。