我需要一个JFrame,当我更改窗口任务栏的大小或位置时,框架不应该自行调整。 在更改任务栏大小和位置时,将完全调用JFrame的哪种方法?我将被要求覆盖哪种方法?
用更清楚的话说, 默认情况下,当我更改窗口任务栏的大小和位置时,JFrame实例将自行调整其高度和宽度。但是当我扩展窗口任务栏或将任务栏从水平更改为垂直时,我的JFrame不应该响应。它应该保持默认状态。
答案 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) {}
});