你會如何製作一個JComponent
(面板,框架,窗口等)全屏,以便它也重疊屏幕上的所有內容,包括Windows開始欄?製作一個Java面板全屏
我不想改變分辨率或任何與像bitdepth等圖形設備,我只是想重疊一切。
你會如何製作一個JComponent
(面板,框架,窗口等)全屏,以便它也重疊屏幕上的所有內容,包括Windows開始欄?製作一個Java面板全屏
我不想改變分辨率或任何與像bitdepth等圖形設備,我只是想重疊一切。
你可以嘗試一些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);
}
});
}
...
}
你能解釋爲什麼這個工程。特別是可運行的部分,比如'l.x - = p.x;'後面的行。它有效,但我想完全理解它。 – Connorelsea 2015-02-23 19:30:52
@Connorelsea在一個單獨的問題中提出這個問題可能會比較容易:5年以上,並且不記得所有的細節。 – VonC 2015-02-23 20:04:23
您需要使用下面的API:http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html
去全屏不如做一個大的面板簡單,你需要尋找到底層操作系統的圖形。但你的JPanel代碼應該翻譯得很好。
檢出this tutorial描述Java的全屏模式API。
示例代碼(取自教程)。請注意,代碼在Window
上運行,因此您需要將JPanel
與Window
(例如JFrame
)一起嵌入,以便執行此操作。
GraphicsDevice myDevice;
Window myWindow;
try {
myDevice.setFullScreenWindow(myWindow);
...
} finally {
myDevice.setFullScreenWindow(null);
}
我需要搜索很多,要做同樣的事情。這裏完全是它的一個工作版本,所以我可以在以後找到它,並使用它。
步驟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);
}
}
到目前爲止給出的答案有什麼問題? – Thomas 2010-03-20 12:57:17
是的,認真。給它Adamski - 你不會得到更好的答案。 – 2010-03-23 07:30:00
我的意思是,只要你不清楚目前的答案你不喜歡什麼,沒有人能夠(或願意)提出其他的東西。 – Thomas 2010-03-23 17:59:11