0

我需要一个 JFrame,当我更改窗口任务栏的大小或位置时,框架不应自行调整。在更改任务栏大小和位置时,将准确调用 JFrame 的哪个方法?我需要覆盖哪种方法?

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

4

2 回答 2

0

通过使用setResizable(false); 示例:

import javax.swing.JFrame;


public class JavaApplication7 extends JFrame{

public static void main(String[] args) {
    JFrame frame = new JFrame("EG");
    frame.setVisible(true);
    frame.setResizable(false);
}
}

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

于 2013-10-26T13:30:10.220 回答
0

我认为不可能阻止它被移动。它似乎没有调用 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) {}
});
于 2013-10-26T15:38:17.707 回答