java - 无法关闭滚动 Pane 内文本区域的工具提示

标签 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 底部的两个大文本区域的工具提示未关闭(在导航器 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/

相关文章:

java - 基本网络.performRequest : Unexpected response code 400 (GET)

java - 使用yearTF.setText(String.format ("%.0f",year))时防止我的 double 向上舍入

Java 在鼠标悬停时重新绘制组件。

java - 使用 Swing GUI 的简单客户端-服务器程序

backbone.js - 加载新页面后工具提示不会消失

javascript - Jquery 工具提示总是将标题名称显示为工具提示

java - 如何实现我的 Java 服务器?

java - 如何从 NetBeans 中解开 Java EE 教程示例并将其与 Eclipse 一起使用?

Qt,如何在不将鼠标悬停在控件上的情况下使工具提示可见?

java - 在 JSONObject 中添加 JSONArray