JFrame setSize为屏幕尺寸但减去标题栏

时间:2015-04-28 02:42:53

标签: java swing jframe

我希望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 个答案:

答案 0 :(得分:1)

有两种方式: 1.使用代码“最大化”窗口,即添加以下内容:

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对你有好处。