Java mac而非windows上的功能透明性?
寻找这个问题的答案只会让我想到其他问题,问我如何在其中一个问题上实现透明度,没有一个问题是透明度在其中一个问题上起作用,但在另一个问题上却没有。 我相信现在你已经能够解决这个问题了,但我会更深入地解释。。。我和一位朋友正在开发一个java应用程序,在运行时,启动程序启动了。他使用mac,JFrame变得透明,然而当我将项目同步到我的计算机上时;在windows PC上,JFrame的背景清晰可见,顶部的图形闪烁,有点像闪光灯 如果有人能提供任何类型的见解,我将不胜感激,如果需要提供更多信息,我将尝试更深入地了解该计划,并获得更多信息Java mac而非windows上的功能透明性?,java,swing,Java,Swing,寻找这个问题的答案只会让我想到其他问题,问我如何在其中一个问题上实现透明度,没有一个问题是透明度在其中一个问题上起作用,但在另一个问题上却没有。 我相信现在你已经能够解决这个问题了,但我会更深入地解释。。。我和一位朋友正在开发一个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());
希望有帮助 给我们看一下你的代码怎么样?程序中有多个类和方法,你想知道是什么让它透明吗?我想你已经读过指南了?给我们看所有相关的东西,没有更多。如果可以的话,请简化它。我已经阅读了该教程,一般来说,透明度不是问题所在,而是跨平台的透明度造成了问题。