【发布时间】:2013-03-11 06:36:57
【问题描述】:
JFrame 隐藏或没有最大化按钮,但应该能够使用鼠标重新调整大小(单击并拖动 jFrame 边框)。 setResizable(false) 只是禁用了最小化按钮,但无法使用鼠标调整大小。
【问题讨论】:
-
除非您编写自己的窗口 UI 委托,否则这在本机 Java 中是不可能的
-
见this类似的答案
JFrame 隐藏或没有最大化按钮,但应该能够使用鼠标重新调整大小(单击并拖动 jFrame 边框)。 setResizable(false) 只是禁用了最小化按钮,但无法使用鼠标调整大小。
【问题讨论】:
我个人想不出允许调整大小但不允许最大化的理由,但这里有一个示例,说明如何在允许调整大小和最小化的同时防止 JFrame 最大化。在 windows 中测试,在所有其他平台上未经测试。使用 setMaximizedBounds() 最小化全屏闪烁。
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);
【讨论】:
一种选择是使用JDialog 而不是JFrame。这允许窗口可以手动调整大小但不能最大化。这样做的唯一问题是您丢失了最小化和最大化按钮。这对您的应用程序来说可能是也可能不是问题。
【讨论】: