Java JFrame设置大小为屏幕大小,但减去标题栏

Java JFrame设置大小为屏幕大小,但减去标题栏,java,swing,jframe,Java,Swing,Jframe,我希望JFrame的尺寸能完全适合我的屏幕。我使用了getScreenSize()获取计算机的分辨率并将其设置为JFrame的大小。然而,我发现Jframe的大小实际上比我的计算机的分辨率大,因为标题栏。(这意味着你会发现jframe的底部在窗口任务栏后面) 以下代码演示了我的问题: import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; public class Titlebar exten

我希望JFrame的尺寸能完全适合我的屏幕。我使用了
getScreenSize()
获取计算机的分辨率并将其设置为
JFrame
的大小。然而,我发现Jframe的大小实际上比我的计算机的分辨率大,因为标题栏。(这意味着你会发现jframe的底部在窗口任务栏后面)

以下代码演示了我的问题:

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.只需使用代码“最大化”窗口,即添加以下内容:

this.setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );
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.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();
    }
}
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();
    }
}
二,。此选项用于解决问题,即始终保持在顶部,然后您将在任务栏上看到此选项,即添加以下内容:

this.setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );
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.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();
    }
}
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会对你有好处。

你是指类似或的东西吗?试试
这个.setExtendedState(JFrame.MAXIMIZED\u两者)编辑:@MadProgrammer说了什么:p就我而言,不要使用
Toolkit.getDefaultToolkit().getScreenSize()
,这是有限的,它只提供“默认”屏幕大小,不考虑多个屏幕系统以及任务栏或dockquoting之类的内容。当我移动JFrame时,我不希望它处于“正常”状态。在“最大化”状态下,我尝试了
frame.setSize(frame.getSize())
,但不起作用,我想我最终会找到答案。谢谢你,安德鲁和疯子谢谢!你的回答非常准确和有用:D我想进一步了解我如何处理“正常”状态的情况,如?你的意思是。。。你想在正常状态下(即零宽度和零长度)最大化框架,这样就可以解决这个问题,还是指其他问题?我希望框架在“正常”状态下具有一定的宽度和高度,这样它就不会被压缩到一个小区域中。