JFrame setSize 为屏幕大小但减去标题栏

JFrame setSize as screen size but minus titlebar

我想要 JFrame 的大小完全适合我的屏幕。我使用 getScreenSize(); 获取计算机的分辨率并将其设置为 JFrame 的大小。但是我发现由于标题栏的原因,Jframe 的大小实际上比我的计算机的分辨率大。 (这意味着你会发现 jframe 的底部在 window 任务栏后面)

以下代码说明了我的问题:

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class Titlebar extends JFrame {

    private final Dimension _screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    public void run(){
        this.setTitle("TitleBar"); 
        this.setSize(_screenSize);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    } 

    public static void main(String[] args) {
        Titlebar test = new Titlebar();
        test.run();
    }
}

是否可以设置 jframe 大小减去标题栏的大小?

有两种方式: 1. 仅 "Maximize" window 使用代码,即添加以下内容:

this.setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );

您的代码将如下所示:

public class Titlebar extends JFrame {

    private final Dimension _screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    public void run(){
        this.setTitle("TitleBar"); 
        this.setSize(_screenSize);
        this.setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    } 

    public static void main(String[] args) {
        Titlebar test = new Titlebar();
        test.run();
    }
}

2。此选项是解决方法,即始终保持在顶部,然后您将在任务栏上看到它,即添加以下内容:

this.setAlwaysOnTop(true);

您的代码将是这样的:

public class Titlebar extends JFrame {

    private final Dimension _screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    public void run(){
        this.setTitle("TitleBar"); 
        this.setSize(_screenSize);
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    } 

    public static void main(String[] args) {
        Titlebar test = new Titlebar();
        test.run();
    }
}

根据您的需要,您可以选择该选项。但我相信选项 1 对你有好处。