2

我正在尝试创建重影图像,同时awt.dnd从程序顶部面板中的画布 2D 到也在程序中间面板中的画布 3D 执行操作。DnD 的东西已实现并使用setDragImage(). 我可以很容易地得到我的幻影图像,但我需要让它在 Java 1.6 上工作,因为 Java 1.6 缺少这个方法。

现在我尝试了很多玻璃面板等:

  • 玻璃面板在 Canvas3D(重量级组件)上工作除外
  • 如果我使用 AWT 玻璃面板(框架),它会绘制我的幻影图像,但整个程序都是黑色的

GHOST 在多个窗口上拖放:看到这个有趣的链接来创建一个JDialog,也创建了它,但我不知道如何让我的对话框不透明:WindowsUtils.setOpaque(d, false);我没有类,我找不到它。这是必要的,因为我需要光标上的这个 1 像素空间才能将注意力集中在我的 canvas3d 上。我希望任何人有任何建议我在谷歌上找不到任何对我的问题有用的东西,谢谢

4

1 回答 1

1

你要做很多工作。我不熟悉canvas3dor canvas2d,但正如你所说,它们似乎是重量级的组件,这些往往不支持透明度。

Per-Pixel Alphing 作为私有 API 被引入 Java 6.10,并从 Java 7 开始公开。

你可以访问私有API,但不推荐,下一个你需要问的问题是,当API不存在时该怎么办?!

public static void setOpaque(Window window, boolean opaque) {
    try {
        Class<?> awtUtilsClass = Class.forName("com.sun.awt.AWTUtilities");
        if (awtUtilsClass != null) {
            Method method = awtUtilsClass.getMethod("setWindowOpaque", Window.class, boolean.class);
            method.invoke(null, window, opaque);
        }
    } catch (Exception exp) {
    }
}
于 2012-11-19T23:23:48.300 回答