Java屏幕分辨率大小

时间:2014-09-03 03:03:59

标签: java swing jframe resolution

我需要为我正在创建的这个项目指点一些方向。我目前正在尝试创建一个自动打开屏幕分辨率的JFrame。我已经在网上寻求项目这方面的帮助,我找到了多种方法。在通过API和参考代码进行更多研究后,如何使用我已经汇总了一些代码的方法。当我运行我的程序时,我得到一个像这样弹出的窗口......(不是全屏......)

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();      
}

}

1 个答案:

答案 0 :(得分:1)

  1. 您永远不会致电WindowSetup
  2. 您将getScreenSize的结果分配给本地变量
  3. 然后你致电pack ... pack使用内容的首选尺寸,而不是窗口,来决定谁最适合调整窗口大小。
  4. 这样才能开始工作......

    最简单的方法是使用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 ...