Java 如何将此JFrame设置为屏幕顶部?

Java 如何将此JFrame设置为屏幕顶部?,java,swing,user-interface,location,jframe,Java,Swing,User Interface,Location,Jframe,很长一段时间以来,我一直试图在屏幕顶部设置JFrame。我使用了setLocation()、setBounds()和其他一些方法,但都没有用。我想要的只是一个矩形,它可以阻挡屏幕的顶部栏(最小化和退出按钮都在这里)。这是我的代码,如果有任何帮助,我将不胜感激 import java.awt.GridBagLayout; import javax.swing.JOptionPane; import javax.swing.WindowConstants; import javax.swing.Sw

很长一段时间以来,我一直试图在屏幕顶部设置JFrame。我使用了setLocation()、setBounds()和其他一些方法,但都没有用。我想要的只是一个矩形,它可以阻挡屏幕的顶部栏(最小化和退出按钮都在这里)。这是我的代码,如果有任何帮助,我将不胜感激

import java.awt.GridBagLayout;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

public class Annoy2 extends javax.swing.JFrame {
    private int width;
    private int height;
    private boolean t = true;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Annoy2 inst = new Annoy2();
                inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }

    public Annoy2() {
        super();
        getDimensions();
        initGUI();
    }

    private void initGUI() {
        try {
            GridBagLayout thisLayout = new GridBagLayout();
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            getContentPane().setLayout(null);
            {
            }
            setUndecorated(t);
            setAlwaysOnTop(true);
            this.setResizable(false);
            pack();
            setSize(width, height);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void getDimensions() {
        width = Integer.parseInt(JOptionPane.showInputDialog(null, "Width: ", Math.round(java.awt.Toolkit.getDefaultToolkit().getScreenSize().getWidth())));
        height = Integer.parseInt(JOptionPane.showInputDialog(null, "Height: ", 30));
    }

}

删除
inst.setLocationRelativeTo(空),使窗口在屏幕上居中

要将窗口置于屏幕顶部,请使用
setBounds()
(在
initGUI()
中):

您不必通过子类
JFrame
来实现这一点

JFrame block = new JFrame();
block.setUndecorated(true);
block.setBounds(0, 0, width, height);
block.setVisible(true);
很久以来,我一直试图在屏幕顶部设置JFrame 时间

使用
setAlwaysOnTop(true)
:设置此窗口是否应始终高于其他窗口。如果有多个始终位于顶部的窗口,则其相对顺序未指定且取决于平台。也就是说,如果其他窗口已始终位于顶部,则这些窗口之间的
相对顺序未指定(取决于平台)。除了另一个始终位于顶部的窗口外,不能将任何窗口置于始终位于顶部的窗口上方

我想要的是一个矩形,它可以阻挡屏幕的顶部栏(其中 最小化和退出按钮为)


使用
setUndecorated(true)
:只能在帧不可显示时调用此方法。也就是说,在调用
JFrame
上的
setVisible(true)
之前,需要先调用该函数
将窗口居中显示在屏幕上。如果希望窗口位于桌面的顶部,为什么要使用它?“我只需要一个矩形,它会挡住屏幕的顶部栏(最小化和退出按钮位于该栏中)”使用未修饰的
JFrame
JWindow
来代替。谢谢!这解决了我的问题。我没有意识到我的inst.setLocationRelativeTo(null);在那里。
JFrame block = new JFrame();
block.setUndecorated(true);
block.setBounds(0, 0, width, height);
block.setVisible(true);