拥有JFrame而不调整任务栏更改

时间:2013-10-26 12:27:58

标签: java swing jframe

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

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

2 个答案:

答案 0 :(得分: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,无法调整大小。

答案 1 :(得分:0)

我认为不可能阻止它被移动。它似乎不调用setBounds或setLocation或setSize,而是直接在OS级别移动窗口。您可以做的最好的事情是使用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) {}
});