Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mac而非windows上的功能透明性?_Java_Swing - Fatal编程技术网

Java mac而非windows上的功能透明性?

Java mac而非windows上的功能透明性?,java,swing,Java,Swing,寻找这个问题的答案只会让我想到其他问题,问我如何在其中一个问题上实现透明度,没有一个问题是透明度在其中一个问题上起作用,但在另一个问题上却没有。 我相信现在你已经能够解决这个问题了,但我会更深入地解释。。。我和一位朋友正在开发一个java应用程序,在运行时,启动程序启动了。他使用mac,JFrame变得透明,然而当我将项目同步到我的计算机上时;在windows PC上,JFrame的背景清晰可见,顶部的图形闪烁,有点像闪光灯 如果有人能提供任何类型的见解,我将不胜感激,如果需要提供更多信息,我将

寻找这个问题的答案只会让我想到其他问题,问我如何在其中一个问题上实现透明度,没有一个问题是透明度在其中一个问题上起作用,但在另一个问题上却没有。 我相信现在你已经能够解决这个问题了,但我会更深入地解释。。。我和一位朋友正在开发一个java应用程序,在运行时,启动程序启动了。他使用mac,JFrame变得透明,然而当我将项目同步到我的计算机上时;在windows PC上,JFrame的背景清晰可见,顶部的图形闪烁,有点像闪光灯

如果有人能提供任何类型的见解,我将不胜感激,如果需要提供更多信息,我将尝试更深入地了解该计划,并获得更多信息

private void setUpWindow(int width, int height) {

    setIconImage(images.get(1));
    setSize(width, height);
    setUndecorated(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setBackground(new Color(0,255,0,0));
    setLayout(new BorderLayout());

    addMouseListener(this);
    setResizable(false);
    setLocationRelativeTo(null);

    addComponents();
    requestFocus();
    setVisible(true);

}

private void addComponents() {
    setContentPane(new BackPanel());
    getContentPane().setBackground(Color.BLACK);
    setLayout(new BorderLayout());

    panel.setSize(screenSize);
    add(panel);
}
窗户尺寸为1000x600

public class BackPanel extends JPanel {

    public BackPanel() {
        setOpaque(false);
        setVisible(true);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

    Graphics2D overGraphics2D = (Graphics2D)g.create();

    overGraphics2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f));
    overGraphics2D.setColor(Color.BLACK);
    overGraphics2D.fill(getBounds());
    overGraphics2D.dispose();
    }
}
public class DrawingPanel extends JPanel
{
    public DrawingPanel()
    {
        setVisible(true);
    }

    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        refreshTimer.schedule(new refreshTimer(), 1);
    }
}
引用的刷新计时器的延迟为“1”,因此它在绘制启动器时启动

还有,这个想法,;用于设置透明度

引用的刷新计时器的延迟为“1”,因此它在绘制启动器时启动

这是跨平台绘图的问题,因为不同的操作系统具有不同的“分辨率”。您需要在
paintComponent()方法中绘制/调用要绘制的方法。您还需要通过获取屏幕大小然后设置窗口全屏来实现窗口全屏(或者有点假全屏)。像这样:

//in the constructor after declaring the frame undecorated
setSize(Toolkit.getDefaultToolkit().getScreenSize());

希望有帮助

给我们看一下你的代码怎么样?程序中有多个类和方法,你想知道是什么让它透明吗?我想你已经读过指南了?给我们看所有相关的东西,没有更多。如果可以的话,请简化它。我已经阅读了该教程,一般来说,透明度不是问题所在,而是跨平台的透明度造成了问题。