禁用jFrame中的最大化和使用鼠标调整大小

10

希望JFrame没有最大化按钮,但仍能使用鼠标(点击并拖动jFrame边框)进行调整大小。使用setResizable(false)只会禁用最小化按钮,而无法使用鼠标调整大小。


除非您编写自己的窗口UI委托,否则在本机Java中不可能实现。 - MadProgrammer
请参考类似的答案:这里 - David Kroukamp
3个回答

2
您可以采取以下步骤:
-右键单击JFrame -选择属性 -取消可调整大小的复选框 -关闭属性 -运行程序
请参阅附图: Freeze maximize button

2

个人认为允许调整大小而不允许最大化没有什么意义,但以下是一个示例,演示如何防止JFrame最大化,同时仍允许调整大小和最小化。在Windows上测试过,在其他平台上未经测试。使用setMaximizedBounds()方法可以将全屏Flash最小化。

    final JFrame jFrameNoMax = new JFrame() {
        {
            setMaximizedBounds(new Rectangle(0, 0));
            addWindowStateListener(new WindowStateListener() {
                public void windowStateChanged(final WindowEvent e) {
                    if (e.getNewState() == MAXIMIZED_BOTH) {
                        setExtendedState(NORMAL);
                    }
                }
            });
        }
    };

    // Tester
    jFrameNoMax.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    jFrameNoMax.setSize(300, 300);
    jFrameNoMax.setLocation(300, 300);
    jFrameNoMax.setVisible(true);

1
在Windows系统中可以正常运行,但很抱歉告诉您,在Mac系统中无法最大化。 - Abin

0

一个选择是使用JDialog而不是JFrame。这允许窗口手动调整大小,但不能最大化。这样做的唯一问题是您会失去最小化和最大化按钮。这可能对您的应用程序有或没有问题。


抱歉,我还需要最小化窗口。 - Abin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接