如何用Java制作Windows7工具提示

如何用Java制作Windows7工具提示,java,windows,swing,windows-7,tooltip,Java,Windows,Swing,Windows 7,Tooltip,我一直在网上到处找,但我没有找到这个小问题的答案。在Windows7(我想在Vista中也是如此)中,你有一个漂亮的银色圆形工具提示,它看起来比旧的黄色框外观糟糕的工具提示要好得多。下面的“如何在Java中生成Windows7工具提示-堆栈溢出”提示是如何显示的 所以在Java中,我想做的就是,制作漂亮的新Windows工具提示。问题是我不知道怎么做 除了下面的简单代码之外,还有一个main方法,它简单地创建此类“Tooltip”的对象 import java.awt.FlowLayout;

我一直在网上到处找,但我没有找到这个小问题的答案。在Windows7(我想在Vista中也是如此)中,你有一个漂亮的银色圆形工具提示,它看起来比旧的黄色框外观糟糕的工具提示要好得多。下面的“如何在Java中生成Windows7工具提示-堆栈溢出”提示是如何显示的

所以在Java中,我想做的就是,制作漂亮的新Windows工具提示。问题是我不知道怎么做

除了下面的简单代码之外,还有一个main方法,它简单地创建此类“Tooltip”的对象

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Tooltip extends JFrame {
public Tooltip() {

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }

    setLayout(new FlowLayout());

    JButton button = new JButton("Tooltip Button");
    button.setToolTipText("Tooltip");
    add(button);

    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(250, 160);
    }
}
正如您在try/multi-catch中所看到的,我设置了程序当前运行的操作系统的外观。如果我在Windows上运行这个程序,我会得到肮脏的黄色工具提示


因此,如果程序在Windows操作系统上运行,我必须对代码进行哪些更改才能获得一个漂亮的银色工具提示?

为此,您可能需要使用基于
JWindow
的组件,如我对的回答所示

有关圆角,请参见

对于轻微的渐变(斜视),请使用

工具提示提供了该链接的简单示例中未包含的功能。但这是一个起点。确保您不会意外地将Windows 7样式工具提示扔给Windows 7之前的用户或其他操作系统的用户。同样,你会感觉到“方形/黄色背景”工具提示的冲突,他们不会发现冲突样式是“漂亮的”。这导致了


实现此效果的最佳方法是通过基于的自定义PLAF

创建自定义外观或修改现有外观可能是一项艰巨的任务。可以使用
javax.swing.plaf.synth
包创建定制的外观和感觉,所需的工作量要小得多。您可以通过编程或使用外部XML文件创建Synth外观


只是一个建议,如果你非常害怕打字,那么为什么你要写这行
catch(ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e)
,为什么你不简单地写
catch(Exception e)
,这会做同样的事情,因为无论出现什么异常,它都会捕获,并且会减少您的键入工作:-)DYM就像我在问题中编辑的屏幕截图一样?谢谢@nIcEcOw,我不知道您可以这样做。我现在觉得自己老了:D我现在可能会更新上面的代码示例。@AndrewThompson非常感谢您花时间这么做。这个问题在我脑子里已经想了几个月了,我希望它能得到回答。我到处找了,但什么也没找到,所以我可以利用我能得到的所有帮助:)这个预览很酷:-)@nIcEcOw你是说在动画GIF中?谢谢。:)这个小图像作为工具提示出现。我记得有一次我问你如何制作一幅图像的动画,你告诉我你制作的软件,在你的网站上,我尝试了一下,学会了如何把三幅图像放在一幅中。对于其他人,我们非常欢迎并保持微笑:-)谢谢@AndrewThompson,但我相信有另一种方法可以正确实现这一点,无论是在API中还是在其他知名或使用的外部库中。我知道有可能获得这些工具提示样式,因为它们在eclipse中无处不在!(eclipse当然是用Java编写的:D)@Shrederator eclipse是Java,但不是Swing