所以我遇到过这个问题很多次,还没有弄清楚或找到解决方案。我有JFrame
能够切换可调整性。但是,对于我想要的内容,我希望维度保持完全相同,但是当setResizable(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();
}
});
为了检查尺寸变化,它不会识别更改,但在运行程序时它会清晰可见。