Java 在不调整任务栏更改的情况下使用JFrame

Java 在不调整任务栏更改的情况下使用JFrame,java,swing,jframe,Java,Swing,Jframe,我需要一个JFrame,当我改变窗口任务栏的大小或位置时,它不应该自动调整。 更改任务栏的大小和位置时,将准确调用JFrame的哪种方法?我需要哪种方法来重写 用更清楚的话来说,, 默认情况下,当我更改窗口任务栏的大小和位置时,JFrame实例将自行调整其高度和宽度。但当我扩展窗口任务栏或将任务栏从水平方向更改为垂直方向时,JFrame不应响应。它应保持其默认状态。使用setresizeable(false) 例如: 这会创建一个名为“EG”的小JFrame,无法调整大小。我认为不可能阻止它被移

我需要一个JFrame,当我改变窗口任务栏的大小或位置时,它不应该自动调整。 更改任务栏的大小和位置时,将准确调用JFrame的哪种方法?我需要哪种方法来重写

用更清楚的话来说,,
默认情况下,当我更改窗口任务栏的大小和位置时,JFrame实例将自行调整其高度和宽度。但当我扩展窗口任务栏或将任务栏从水平方向更改为垂直方向时,JFrame不应响应。它应保持其默认状态。

使用
setresizeable(false)
例如:


这会创建一个名为“EG”的小JFrame,无法调整大小。

我认为不可能阻止它被移动。它似乎不调用setBounds、setLocation或setSize,而是直接在操作系统级别移动窗口。您可能能做的最好的事情是使用ComponentListener检测边界更改,然后立即将窗口放回您想要的位置

final Rectangle fixedPosition = new Rectangle(...);

frame.setBounds(fixedPosition);
frame.addComponentListener(new ComponentListener() {
    public void componentMoved(ComponentEvent e) {
        if (!frame.getBounds().equals(fixedPosition)) {
            frame.setBounds(fixedPosition);
        }
    }
    public void componentResized(ComponentEvent e) {
        componentMoved(e);
    }
    public void componentShown(ComponentEvent e) {}
    public void componentHidden(ComponentEvent e) {}
});

setresizeable(false)
?您是在谈论任务栏(屏幕边缘的操作系统工具栏)还是标题栏(附在每个窗口的顶部)?关于屏幕底部的操作系统任务栏。
final Rectangle fixedPosition = new Rectangle(...);

frame.setBounds(fixedPosition);
frame.addComponentListener(new ComponentListener() {
    public void componentMoved(ComponentEvent e) {
        if (!frame.getBounds().equals(fixedPosition)) {
            frame.setBounds(fixedPosition);
        }
    }
    public void componentResized(ComponentEvent e) {
        componentMoved(e);
    }
    public void componentShown(ComponentEvent e) {}
    public void componentHidden(ComponentEvent e) {}
});