首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当拖动到第二个屏幕时,透明JDialog变得不透明(带有Cinnamon的ubuntu 14.04,java 1.8.0_74-b02)

当拖动到第二个屏幕时,透明JDialog变得不透明(带有Cinnamon的ubuntu 14.04,java 1.8.0_74-b02)
EN

Stack Overflow用户
提问于 2016-03-21 20:21:47
回答 2查看 287关注 0票数 2

我创建了透明的JDialog,不幸的是它不能在两个屏幕上工作。当它被拖到其他屏幕上时,它会变得不透明。代码如下,只需运行它并将label拖到其他屏幕上。

代码语言:javascript
复制
public class TransparentFrame{

public static void main(String[] args) {
    JDialog dialog = createDialog();
    SwingUtilities.invokeLater(() -> dialog.setVisible(true));
}


private static JDialog createDialog() {
    JDialog dialog = new JDialog();

    JLabel label = new JLabel("drag me to the other screen");
    label.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent e) {
            SwingUtilities.invokeLater(() -> dialog.setLocation(e.getLocationOnScreen()));
        }
    });
    label.setOpaque(false);
    dialog.getContentPane().add(label);

    dialog.setUndecorated(true);
    dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE);

    dialog.setBackground(new Color(0, 0, 0, 0));
    dialog.getContentPane().setBackground(new Color(0, 0, 0, 0));

    dialog.pack();
    return dialog;
}

}

有人知道怎么修吗?

环境:带有Cinnamon的Ubuntu 14.04,java 1.8.0_74-b02

EN

回答 2

Stack Overflow用户

发布于 2016-03-21 23:20:28

我创建了透明的JDialog

有关更多信息,请查看Backgrounds With Transparency

尝试使用以下命令而不是使用透明颜色:

代码语言:javascript
复制
dialog.setOpacity(...);
票数 0
EN

Stack Overflow用户

发布于 2016-03-21 23:22:34

尽管这可能是问题的根源,也可能不是问题的根源,但最好是移除透明窗口的阴影。如果没有这些行,我的程序(在Mac上)会在中断时将阴影“烧”到窗口显示中。虽然是单显示器设置( MacBook屏幕),但在桌面之间切换会将阴影“烧焦”到窗口显示中。

JRootPane root = frame.getRootPane(); root.putClientProperty("Window.shadow", Boolean.FALSE);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36130906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档