如何在切换setResizable()时阻止JFrame更改大小

时间:2016-10-14 04:12:47

标签: java swing jframe resize resizable

所以我遇到过这个问题很多次,还没有弄清楚或找到解决方案。我有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();
        }
    });

为了检查尺寸变化,它不会识别更改,但在运行程序时它会清晰可见。

0 个答案:

没有答案