2014-09-03 169 views
0

我需要一些我正在創建的項目的方向。我目前正在嘗試創建一個自動打開屏幕分辨率的JFrame。我已經在網上尋找這個項目的這方面的幫助,並且我找到了多種方法來完成它。在通過API和參考代碼進一步研究方法之後,我將這些方法放在一起。當我運行我的程序,我得到的是這樣的彈出窗口......(不是全屏...)Java屏幕分辨率大小

Program Results

我將不勝感激,我搞砸了一些指點,我寧願幫助提示或技巧的方式,但我會接受代碼(對不起,只是試圖學習和不復制代碼)。感謝您的時間。

import java.awt.Toolkit; 
import java.awt.Dimension; 
import javax.swing.JFrame; 
import javax.swing.ImageIcon; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.image.*; 
import java.awt.Frame; 

public class Window { 

private static int ScreenWidth; 
private static int ScreenHeight; 

public int getWidth(){ 
    return ScreenHeight; 
} 

public int getLength(){ 
    return ScreenHeight; 
} 

public void WindowSetup(){ 
    Dimension UserScreen = Toolkit.getDefaultToolkit().getScreenSize(); 
    int ScreenWidth = (int) UserScreen.getWidth(); 
    int ScreenHeight = (int) UserScreen.getHeight(); 
} 

static void CreateJframe(){ 
    JFrame gui = new JFrame("Changeable Resolution"); 
    gui.setDefaultLookAndFeelDecorated(true); 
    gui.setDefaultCloseOperation(gui.EXIT_ON_CLOSE); 
    gui.setPreferredSize(new Dimension(ScreenWidth, ScreenHeight)); 
    gui.pack(); 
    gui.setVisible(true); 

} 


public static void main(String[] args) { 
    Window window = new Window(); 
    Window.CreateJframe();  
} 

}

+0

請參閱['Frame.setExtendedState(state)'](http://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html#setExtendedState-int-) – 2014-09-03 03:06:36

回答

1
  1. 你永遠不會調用WindowSetup
  2. 您指定的getScreenSize結果局部變量
  3. 然後調用pack ... pack使用內容的首選大小,不窗口,決定誰最適合窗戶的大小。

所以這是行不通的......

最簡單的方法是使用JFrame#setExtendedState並把它傳遞JFrame.MAXIMIZED_BOTH

JFrame gui = new JFrame("Changeable Resolution"); 
gui.setExtendedState(JFrame.MAXIMIZED_BOTH); 
gui.setDefaultCloseOperation(gui.EXIT_ON_CLOSE); 
gui.pack(); 
gui.setVisible(true); 

現在,你可能會說,但我想覆蓋任務欄......

在這種情況下,你可以嘗試更多的東西一樣......

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
GraphicsDevice gd = ge.getDefaultScreenDevice(); 

GraphicsConfiguration gc = gd.getDefaultConfiguration(); 
Rectangle bounds = gc.getBounds(); 

JFrame gui = new JFrame("Changeable Resolution"); 
gui.setSize(bounds.width, bounds.height); 
gui.setLocation(bounds.x, bounds.y); 
gui.setDefaultCloseOperation(gui.EXIT_ON_CLOSE); 
gui.setVisible(true); 

但你可能會發現任務欄不喜歡被覆蓋,在這種情況下,你就需要求助於全屏獨佔模式...

詳情請參閱Full-Screen Exclusive Mode API ...

+0

謝謝你再次幫助MadProgrammer。總是喜歡你給出的答案和我學習的所有東西,並且可以研究更多! – 2014-09-03 03:15:09

+0

@MichaelShoenberger自我教育,完成困惑的基石......我的意思是瘋狂,我的意思是迷人;) – MadProgrammer 2014-09-03 03:17:29

+0

是的,我已經體驗到了這一點,至少有一點。 :P我仍然發現自我教育對我個人而言是一個更好的方式,可以讓我學習編程方面的知識,而不是我已經接受的很多課程。 – 2014-09-03 03:20:47