我需要一个 JFrame,当我更改窗口任务栏的大小或位置时,框架不应自行调整。在更改任务栏大小和位置时,将准确调用 JFrame 的哪个方法?我需要覆盖哪种方法?
更清楚地说,默认情况下,当我更改窗口任务栏的大小和位置时,JFrame 的实例会自行调整其高度和宽度。但是当我扩展窗口任务栏或将任务栏从水平更改为垂直时,我的 JFrame 不应该响应。它应保持默认状态。
通过使用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,无法调整其大小。
我认为不可能阻止它被移动。它似乎没有调用 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) {}
});