制作Java面板全屏

制作Java面板全屏,java,swing,fullscreen,Java,Swing,Fullscreen,如何使JComponent(面板、框架、窗口等)全屏显示,从而使其与屏幕上的所有内容(包括windows开始栏)重叠 我不想更改分辨率或任何图形设备,如bitdepth等,我只想重叠其他内容。您需要使用以下API: 全屏显示并不像制作一个大面板那么简单,您需要查看底层操作系统的图形。但是您的JPanel代码应该翻译得很好。查看描述Java全屏模式API的内容 示例代码(取自教程)。请注意,代码在窗口上运行,因此您需要将JPanel嵌入窗口(例如JFrame)才能执行此操作 GraphicsDev

如何使
JComponent
(面板、框架、窗口等)全屏显示,从而使其与屏幕上的所有内容(包括windows开始栏)重叠


我不想更改分辨率或任何图形设备,如bitdepth等,我只想重叠其他内容。

您需要使用以下API:

全屏显示并不像制作一个大面板那么简单,您需要查看底层操作系统的图形。但是您的JPanel代码应该翻译得很好。

查看描述Java全屏模式API的内容

示例代码(取自教程)。请注意,代码在
窗口
上运行,因此您需要将
JPanel
嵌入
窗口
(例如
JFrame
)才能执行此操作

GraphicsDevice myDevice;
Window myWindow;

try {
    myDevice.setFullScreenWindow(myWindow);
    ...
} finally {
    myDevice.setFullScreenWindow(null);
}
您可以尝试一些,允许容器填充屏幕(因此它不是单个组件的解决方案,而是容器中的一组组件,如
JFrame


我需要搜索很多东西,也需要这样做。这里有一个完整的工作版本,我可以在以后找到并使用它

步骤1:创建一个名为fullscreen.java的文件

步骤2:复制此代码并按原样粘贴:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class fullscreen extends Window 
{
  private Button button;

  public fullscreen() 
  {
    super(new Frame());
    button = new Button("Close");
    button.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        System.exit(0);
      }
    });

    setLayout(new FlowLayout());
    add(button);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(0,0,screenSize.width, screenSize.height);
  }

  public static void main(String[] args) 
  {
    // This will take over your whole screen tested and works in my:
    // Fedora 12/13/14
    // CentOS 5.0
    // if this works for you, in other platforms, please leave a comments which OS it worked.
    // happy coding!
    new fullscreen().setVisible(true);
  }

}
步骤3:编译代码并运行


完成。

如果我是你,我会尝试让Java不绘制Jframe的边框,然后让它占据整个屏幕

import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;

import javax.swing.JFrame;


public class FenNoBorder extends JFrame {

    public FenNoBorder () {
        setUndecorated(true);
        setVisible(true);
        GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
        setBounds(maximumWindowBounds);
    }
}

到目前为止给出的答案有什么问题?是的,说真的。把它交给亚当斯基——你不会得到更好的答案。我的意思是,只要你不给出你不喜欢当前答案的线索,就没有人能够(或愿意)想出其他东西。你能解释一下为什么这样做吗。特别是runnable中的部分,例如
l.x-=p.x之后的行。这是可行的,但我也想完全理解它。@Connorelsea用一个单独的问题问这个问题可能会更容易:5年多之后,不记得所有的细节。
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;

import javax.swing.JFrame;


public class FenNoBorder extends JFrame {

    public FenNoBorder () {
        setUndecorated(true);
        setVisible(true);
        GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds();
        setBounds(maximumWindowBounds);
    }
}