可执行JAR文件不适合屏幕

时间:2019-07-16 13:19:55

标签: java jframe executable-jar screen-size toolkit

我使用JFrame在eclipse中编写了一个程序,以显示将在单独的PC上运行的GUI。为了适应屏幕,我使用了Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();setSize((int)screenSize.getWidth(), (int)screenSize.getHeight());,但是由于某些原因,当我在另一台PC上运行JAR文件时,它太大了。使它适合运行JAR文件的任何屏幕的最佳方法是什么?

编辑:我添加了此问题的示例代码,并注释掉了我尝试失败的4个“选项”。

Image run on Eclipse :

Image run on JAR file:

package testDisplay;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel
import javax.swing.JPanel;

public class Main {

   public static void main(String []args) {
   Display display = new Display();
   }
}

@SuppressWarnings("serial")
public class Display extends JFrame {

/**
 * Constructor for Display
 */
public Display() {
    // Create Window       
    setTitle("Production Perfomance");
    setUndecorated(true);
    setVisible(true);
    setLocation(new Point(0,0));
    setLayout(null);
    getContentPane().setBackground(Color.BLACK);

    // Option 1: 
    //GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
    //setSize((int)gd.getDisplayMode().getWidth(), (int)gd.getDisplayMode().getHeight());

    // Option 2:
    //Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    //setSize((int)screenSize.getWidth(), (int)screenSize.getHeight());

    // Option 3:
    //setSize(MAXIMIZED_HORIZ, MAXIMIZED_VERT);

    // Option 4:
    //setExtendedState(MAXIMIZED_BOTH);

    // Add Panel with Label  
    JLabel title = new JLabel("<- - - - - - - - - - - - - - - ->");
    title.setFont(new Font("Arial Black", Font.BOLD, 140));  
    title.setForeground(new Color(53, 203, 253));
    JPanel bTitle = new JPanel();
    bTitle.setBackground(new Color(39, 67, 157));

    title.setBounds(0, 90, getWidth(), 150);
    bTitle.setBounds(0, 400, getWidth(), 300);
    add(bTitle);
    bTitle.add(title); 
}

}

1 个答案:

答案 0 :(得分:-1)

没有其他方法可以获取监视器的当前大小。如果Toolkit由于某种原因(可能是您的代码中的问题)无法正常工作,那么使框架适合屏幕的唯一另一种方法是对屏幕尺寸进行硬编码。