2010-02-27 59 views
15

你會如何製作一個JComponent(面板,框架,窗口等)全屏,以便它也重疊屏幕上的所有內容,包括Windows開始欄?製作一個Java面板全屏

我不想改變分辨率或任何與像bitdepth等圖形設備,我只是想重疊一切。

+1

到目前爲止給出的答案有什麼問題? – Thomas 2010-03-20 12:57:17

+0

是的,認真。給它Adamski - 你不會得到更好的答案。 – 2010-03-23 07:30:00

+0

我的意思是,只要你不清楚目前的答案你不喜歡什麼,沒有人能夠(或願意)提出其他的東西。 – Thomas 2010-03-23 17:59:11

回答

11

你可以嘗試一些codes in this page,允許一個容器來填充屏幕(所以它不是一個個人組件的解決方案,但對於一個容器內的組件集就像一個JFrame

public class MainWindow extends JFrame 
{ 
    public MainWindow() 
    { 
    super("Fullscreen"); 
    getContentPane().setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize()); 
    pack(); 
    setResizable(false); 
    show(); 

    SwingUtilities.invokeLater(new Runnable() { 
     public void run() 
     { 
     Point p = new Point(0, 0); 
     SwingUtilities.convertPointToScreen(p, getContentPane()); 
     Point l = getLocation(); 
     l.x -= p.x; 
     l.y -= p.y; 
     setLocation(l); 
     } 
    }); 
    } 
    ... 
} 
+0

你能解釋爲什麼這個工程。特別是可運行的部分,比如'l.x - = p.x;'後面的行。它有效,但我想完全理解它。 – Connorelsea 2015-02-23 19:30:52

+0

@Connorelsea在一個單獨的問題中提出這個問題可能會比較容易:5年以上,並且不記得所有的細節。 – VonC 2015-02-23 20:04:23

17

檢出this tutorial描述Java的全屏模式API。

示例代碼(取自教程)。請注意,代碼在Window上運行,因此您需要將JPanelWindow(例如JFrame)一起嵌入,以便執行此操作。

GraphicsDevice myDevice; 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 
1

我需要搜索很多,要做同樣的事情。這裏完全是它的一個工作版本,所以我可以在以後找到它,並使用它。

步驟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:編譯代碼和運行

完成。

0

如果我是你,我會盡量使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); 
    } 
}