2015-05-28 54 views
0

我正在使用Netbeans來做一些Java,我想讓我的應用程序,它的幀全屏。事情是,它會全屏顯示,但隨後,由於我的畫面不夠大,所以不能填滿屏幕,如果您不明白,請撥打check image。它必須讓面板成爲用戶的決議並將其放在中心位置。如何使我的Java JFrame包括面板全屏

我的代碼遵循

public class frmMenu extends javax.swing.JFrame { 

    public frmMenu() { 
     initComponents(); 
     this.setExtendedState(JFrame.MAXIMIZED_BOTH); 
     this.setUndecorated(true); 
    } 
+1

單挑,你應該導入,而不是引用它這樣的JFrame。 – CaffeineToCode

回答

1

只是使用工具包來獲取屏幕尺寸: http://docs.oracle.com/javase/7/docs/api/java/awt/Toolkit.html#getScreenSize()

int width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(); 
int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight(); 
setSize(width,height); 
setUndecorated(true); 

更好的辦法:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
int width = (int)dim.getWidth(); 
int height = (int)dim.getHeight(); 
setSize(width,height); 
setUndecorated(true); 

編輯: 爲了獲得良好的位置設置:

setLocation(0,0); 

我想這是一個圖像的框架,你應該縮放它。 設置位置後,它會出現在左上角。 我不知道你是如何渲染圖像的,爲了解決這個問題你提供了更多的源代碼。
對於創建圖形我建議使用的東西比MS油漆好;)

EDIT(2): 重寫:

getContentPane().add(panMenu); 

要:

getContentPane().add(panMenu,BorderLayout.CENTER); 

,並刪除行:

panMenu.setBounds(0, -20, 580, 630); 

並確保你有:

setLayout(new BorderLayout()); 

用於幀
與圖形接口布點是絕對定位壞。所以也許它不會正確地因爲子面板中的絕對定位而改變它

+0

這是發生什麼事,http://postimg.org/image/6zpsj9tgt/ – Jack

+0

@Jack我的答案編輯 – maskacovnik

+0

我明白了。但是,即使我能夠正確定位,我的面板仍然不會變得更大,也不會居中。這就像以前一樣。圖片添加了setLocation的代碼:http://postimg.org/image/evrhoyic9/ – Jack

1

這在Java中並不是最簡單的。有很多細節需要處理。檢查了這一點:Post

這將調用:

GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
device.setFullScreenWindow(this); 

這可以掛接到底層操作系統的全屏幕支持,而不是僅僅做一個大窗口。

JavaDoc