如何在Java中制作一个Windows 7的工具提示

3
我已经在网上寻找了很久,但是没有找到关于这个小问题的答案。在Windows 7(以及Vista中,我认为),你有一个漂亮的圆角银色tooltip,看起来比旧的黄色框极差的一个好得多。下面是"How do I make a Windows 7 Tooltip in Java - Stack Overflow"提示的形式。
在Java中,我想做到完全一样,制作出漂亮的新Windows tooltip。问题是我不知道如何做到。
除了以下简单的代码外,还有一个主要方法只是创建该类'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操作系统上运行,我需要进行哪些更改才能获得漂亮的银色工具提示呢?


只是一个建议,如果你害怕打字,那么为什么要写这一行 catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e),为什么不直接写 catch(Exception e) 呢?这样做的效果是一样的,因为它会捕获任何异常并减少你的打字工作 :-) - nIcE cOw
我可以在问题中编辑的截图中看到DYM吗? - Andrew Thompson
感谢 @nIcEcOw,我不知道你可以这样做。现在我感觉老了 :D 现在我可能会更新上面的代码示例。 - Shrederator
@AndrewThompson非常感谢您抽出时间来做这件事。这个问题已经在我脑海中盘旋了几个月,希望它能得到解答。我已经到处寻找,但什么都没有找到,所以我需要尽可能多的帮助 :) - Shrederator
1个回答

3
你可能需要使用基于JWindow的组件,就像我在此回答中所示。对于圆角,请参见如何创建半透明和形状窗口。对于轻微的渐变(squints),请使用GradientPaint绘制背景。工具提示提供了一个不包括在那个简单示例中的功能。但它是一个起点。确保您不会意外地将Windows 7样式的工具提示放到Windows 7之前的用户或其他操作系统的用户中。就像你觉得“正方形/黄色BG”工具提示不协调一样,他们也不会认为这种不协调的样式很“漂亮”。这导致...通过基于Synth外观的自定义PLAF实现效果最佳。 创建自定义外观或修改现有外观可能是一项艰巨的任务。可以使用javax.swing.plaf.synth包来创建自定义外观,而不需要太多的努力。您可以通过编程或使用外部XML文件创建Synth外观。

这个预览东西太酷了 :-) - nIcE cOw
@nIcEcOw 你的意思是在动态图中吗?谢谢。 :) - Andrew Thompson
这是一个小图像,作为工具提示出现。我记得曾经问过你如何给图像添加动画效果,你告诉我你在自己的网站上开发了一款软件,我试着使用它,学会了如何将三个图像合并成一个。其他的事情,非常欢迎你,保持微笑 :-) - nIcE cOw
谢谢@AndrewThompson,但我确信有另一种正确实现这个的方法,无论是在API中还是其他众所周知或使用的外部库中。我知道可以获取这些工具提示样式,因为它们在Eclipse中随处可见!(当然,Eclipse是用Java编写的:D) - Shrederator
1
@Shrederator Eclipse是Java,但不是Swing。 - kleopatra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接