2014-09-03 168 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