Java JToolTip的使用

Java JToolTip的使用,java,swing,Java,Swing,我希望使用该类,而不是调用JComponent setToolTiptText方法,而是调用代码 下面不显示工具提示: JButton btn = new JButtn("SAVE"); JToolTip tip_for_button = new JToolTip(); tip_for_button.setTipText("blah blah"); tip_for_button.setComponent(btn); 为什么?您可能需要调用setToolTipText()。有关详细信息,请参阅。

我希望使用该类,而不是调用JComponent setToolTiptText方法,而是调用代码 下面不显示工具提示:

JButton btn = new JButtn("SAVE");
JToolTip tip_for_button = new JToolTip();
tip_for_button.setTipText("blah blah");
tip_for_button.setComponent(btn);

为什么?

您可能需要调用setToolTipText()。有关详细信息,请参阅。

什么是按钮的提示?为了让它正常工作,我非常确定按钮的
tip\u
必须是
tip
,因为所有实际捕获鼠标事件并显示工具提示的代码都在
ToolTipManager
中(该类的实例是单例的,在应用程序中是唯一的),当确定要显示的工具提示时,工具提示管理器总是在组件上调用
JComponent.createToolTip()
方法。因此,如果您想使用自己的工具提示,必须重写此方法并编写如下内容:

JButton btn = new JButton("SAVE"){

        public JToolTip createToolTip() {
           JToolTip tip_for_button = new JToolTip(){
               public String getTipText() {
                   return "blah blah";
               }
           };
           tip_for_button.setComponent(this);
           return tip_for_button;
       }
       };
       btn.setToolTipText("notnull");

setToolTipText
是必需的,或者工具提示将不显示,传递给它的文本总是设置为组件创建的工具提示,因此如果您想要不可变的文本,您可以覆盖
JToolTip.getTipText()

您需要添加更多的代码,理想情况下是添加一个。因此,很难回答你,因为我们错过了所有的上下文。您提供的内容不足以描述问题。上面的组件只是使用BorderLayout容器插入JFrame的窗口。。。我认为没有必要证明这一点来解决问题。不过,谢谢。虽然他说他不想使用“setToolTipText()”。嗯,我试过了,但没用。。。你确定它对你有用吗?Thx,通过阅读API并进行尝试,我的结论是,如果不调用setToolTipText(),就不会显示工具提示。我不知道我们是否正确,但目前,只有这个解决方案似乎有效…@Sylvain M是的,我们是对的。在管理鼠标进入组件时工具提示显示的类中,ToolTipManager的源代码($InsideTimeAction)中有以下代码(我删掉了不相关的行):toolTipText=insideComponent.getToolTipText(MouseeEvent);如果(toolTipText!=null){showtimmediate=true;showTipWindow();}否则{hideTipWindow();}但是如果我们删除btn.setToolTipText(“notnull”)并放置ToolTipManager ToolTipManager=ToolTipManager.sharedInstance();ToolTimManager.registerComponent(btn);工具提示仅使用CTRL+F1组合键显示,而不使用鼠标悬停在组件上!!!!奇怪的Strange@xdevel2000如前所述,在代码ToolTipManager$InsidetItemAction中,getToolTipText被检查为不为null,该类管理鼠标悬停事件的工具提示。我真的不明白为什么JToolTip.getText没有被检查,或者为什么gettooltipext没有在其他方法中被检查,但是很好。