我想使用该类,而不是调用JComponent setToolTipText方法,而是代码
下面没有显示工具提示:

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


为什么?

最佳答案

好吧,因为实际上捕获鼠标事件并显示工具提示的所有代码都在ToolTipManager中(此类的实例是单例,在应用程序中是唯一的),并且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是强制性的,否则将不显示工具提示,并且传递给它的文本始终设置为Component创建的工具提示,因此,如果要使用不可变的文本,请覆盖JToolTip.getTipText()

关于java - 使用JToolTip,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3229714/

10-12 06:14