Java 如何在切换SetResizeable()时阻止JFrame更改大小
所以我已经多次遇到这个问题,还没有找到解决办法。我有一个Java 如何在切换SetResizeable()时阻止JFrame更改大小,java,swing,jframe,resize,resizable,Java,Swing,Jframe,Resize,Resizable,所以我已经多次遇到这个问题,还没有找到解决办法。我有一个JFrame,它能够切换大小调整。然而,对于我想要的,我希望维度保持完全相同,但是当我setresizeable(false)时JFrame改变大小。为什么会这样,我如何阻止它发生 以下是一个示例: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public
JFrame
,它能够切换大小调整。然而,对于我想要的,我希望维度保持完全相同,但是当我setresizeable(false)时
JFrame改变大小。为什么会这样,我如何阻止它发生
以下是一个示例:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ResizeSample extends JFrame{
public ResizeSample() {
super("Resize Sample");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setPreferredSize(new Dimension(300, 300));
setLocation(1930, 10);
JButton toggle = new JButton("Toggle Resize");
toggle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setResizable(!isResizable());
}
});
add(toggle, BorderLayout.NORTH);
pack();
setVisible(true);
}
public static void main(String[] args) {
new ResizeSample();
}
}
编辑
我还忘了提到,当我将ActionListener
代码更改为:
toggle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Before: " + getSize());
setResizable(!isResizable());
System.out.println("After: " + getSize());
System.out.println();
}
});
为了检查尺寸更改,它不会识别更改,但在运行程序时可以清楚地看到。调用
setresizeable(false)
后,它的大小是多少?我可以想象大小将被设置为getPreferredSize()
返回的值,但这只是一个猜测。@Axel在调用setResizeable(false)
前后调用setPreferredSize()
表示大小相同,但从视觉上看,显然发生了变化。调用getSize()会得到什么
调用前后setresizeable(false)
?如果在调用setResizeable(false)
之前执行setPreferredSize(null)
,会发生什么情况?什么L&F?Mac OS X上不调整大小,这也会将窗口
移动到my(较小且垂直偏移)屏幕的右上角。另请参见。我在Windows 10上使用getSystemLookAndFeelClassName()
。当我在学校的一台运行MacOSX的计算机上测试它时,我也不记得看到过这个问题。这是否意味着这是特定于Windows的?如果是的话,有没有办法修复它?调用setresizeable(false)
后它的大小是多少?我可以想象大小将被设置为getPreferredSize()
返回的值,但这只是一个猜测。@Axel在调用setResizeable(false)
前后调用setPreferredSize()
表示大小相同,但从视觉上看,显然发生了变化。调用getSize()会得到什么
调用前后setresizeable(false)
?如果在调用setResizeable(false)
之前执行setPreferredSize(null)
,会发生什么情况?什么L&F?Mac OS X上不调整大小,这也会将窗口
移动到my(较小且垂直偏移)屏幕的右上角。另请参见。我在Windows 10上使用getSystemLookAndFeelClassName()
。当我在学校的一台运行MacOSX的计算机上测试它时,我也不记得看到过这个问题。这是否意味着这是特定于Windows的?如果是的话,有没有办法解决?