Java 没有工具提示的Jbutton会生成黑点

Java 没有工具提示的Jbutton会生成黑点,java,swing,netbeans,jbutton,Java,Swing,Netbeans,Jbutton,当鼠标在没有工具提示的任何按钮上输入时,会出现黑点(就像工具提示的一角)。这真的很奇怪,我不知道该怎么办:/I我通过netbeans->java桌面应用程序生成了我的项目。我从未在该按钮中设置toolTipText,因此它们默认为空。有什么想法吗 编辑: 当我写到它是空的时,我的意思是它在JButton工具提示的属性中什么都不是。生成的代码: lottery.setAction(actionMap.get("lotteryStart")); // NOI18N lottery.setText(r

当鼠标在没有工具提示的任何按钮上输入时,会出现黑点(就像工具提示的一角)。这真的很奇怪,我不知道该怎么办:/I我通过netbeans->java桌面应用程序生成了我的项目。我从未在该按钮中设置toolTipText,因此它们默认为空。有什么想法吗

编辑: 当我写到它是空的时,我的意思是它在JButton工具提示的属性中什么都不是。生成的代码:

lottery.setAction(actionMap.get("lotteryStart")); // NOI18N
lottery.setText(resourceMap.getString("lottery.text")); // NOI18N
lottery.setName("lottery"); // NOI18N
programView.properties:

lottery.text=Start

不要使用NetBeans生成代码。这样,您就知道所有代码都做了什么,并可以在出现问题时进行更改

默认值应为null,而不是“”(空字符串)


发布您的演示问题的文章。

我同意@jfpoilpret的观点,该问题与NetBeans无关。问题是工具提示没有像@camickr所说的那样是默认的,即null。您必须在某处将其设置为“”空字符串。将其设置为null,则问题已排序

下面的示例代码说明了这个问题。一个按钮的工具提示为空(因为println证明这是默认按钮),另一个按钮的工具提示为“”(空字符串)


这是一个老问题,但实际上是一个netbeans问题,应该予以修复。不过,这并不是固定不变的


Netbeans将工具提示设置为“”而不是null。即使在文本中将它们设置为null,下次打开netbeans的UI设计时,它也会再次将它们设置为“”。

我认为问题不在于netbeans生成的代码,而在于这里使用的Swing App Framework(由netbeans支持)。问题似乎是SAF资源注入在属性文件中未指定资源时使用“”而不是null来注入工具提示。添加到camickr correct sugestion,Java桌面应用程序框架基于Swing,实现了一些方法,有些可能没有,无论如何,检查一下这个Swing tuturials on,以及问题所在的方法on和+1+1的大量示例。为了让自己更容易找到答案,其他人可能会想知道,我在这里添加了我的答案,代码展示了大家在这里所说的内容和问题。我在所有jButtons setToolTipText(null)中添加了setToolTipText(null),它可以正常工作。幸运的是,我只有10个按钮,所以这不是一个问题。IIRC,还有一种方法,直接在属性文件中,将工具提示设置为null,类似于
彩票。tooltipText={null}
,尽管我记不起确切的细节。无论如何,这看起来仍然像是SAF资源注入中的一个bug。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ToolTipTest
{
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {               
                JPanel p = new JPanel();
                JButton b1 = new JButton("My tooltip is null");
                System.out.println("default tooltip is b1.getToolTipText()="+b1.getToolTipText());
                b1.setToolTipText(null);
                p.add(b1);
                JButton b2 = new JButton("My tooltip is\"\"");
                b2.setToolTipText("");
                p.add(b2);
                JFrame f = new JFrame();
                f.setContentPane(p);
                f.setSize(400, 300);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
            }
        });
    }
}