- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
最初(参见我之前的问题“Java how to make JFrames start off as a maximised window”)我想制作一个开始时最大化的窗口。此代码完成此操作:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
然而,如果这个窗口被恢复下来,它就变成了一个几乎不存在的栏。为了解决这个问题,我使用 setSize() 为窗口设置了一个大小。这可行,但会带来另一个问题,窗口仍然可以调整大小。
为了解决这个问题,我设置了 setResizable(false);到目前为止,这是我的代码:
public static void main(String[] args) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
JFrame frame = new JFrame("Jedia");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setSize(screenSize);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
但是,现在窗口以其指定大小(而不是最大化)开始,并且无法恢复。
所以,我的问题是,我怎样才能使窗口在开始时最大化,在它恢复时给它一个大小,并使它无法调整大小?还是制作一个开始时最大化且无法向下还原的窗口?
最佳答案
有一个几乎始终有效的简单修复方法:让您的框架在设置为可见后不可调整大小。所以只能这样修改你的代码:
public static void main(String[] args) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
JFrame frame = new JFrame("Jedia");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setSize(screenSize);
frame.setVisible(true); // FIRST visible = true
frame.setResizable(false); // THEN resizable = false
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
这样,框架将开始最大化,最大化按钮将变灰,防止用户使用它。 (我真的不知道你为什么要这样做。我想只有当窗口可见时才真正应用最大化状态,如果你之前让它不可调整大小,它不会应用。)
它几乎一直有效,因为至少在 Windows 7 上,您可以通过单击标题栏并拖动它来使窗口脱离最大化状态。但它将是您之前设置的大小。问题是您的用户将无法再次最大化它,而且我还没有找到让听众使窗口回到最大化状态的方法。 (编辑:@David Kroukamp 在他的回答的最后部分表明可以通过使用 ComponentListener 强制最大化状态。因此您不必使用 setResizable(false)
这样您仍然Windows 7 有问题,因为无论出于何种原因,此事件都未捕获拖动操作,但用户将能够使用最大化按钮将其放回应有的位置。)
现在,几乎没有理由去做这种事情。当您阻止用户操纵他们的窗口时,用户并不真正喜欢(例如,无法移动最大化的窗口,当您有多个屏幕时,这会很烦人)。一个异常(exception)是,如果您正在制作一个通常是全屏的游戏。但是你不会想要一个 JFrame,因为你不想要所有的装饰,而是一个窗口。
如果您的问题是默认窗口尺寸非常小,那是正常的。你必须首先在你的框架中放置一些东西(一些控件,按钮,你在你的应用程序中想要的东西),使用布局(这很重要)然后调用方法 pack()
在你的框架上。它将为您的窗口选择一个不错的默认大小。
最后,最后一句话。我已将我的示例代码放在 main
中方法作为快捷方式,但您应该始终使用 SwingUtils.invokeLater()
在 Swing EDT 中执行 Swing 操作.
关于Java如何使JFrames最大化但不可调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882417/
给定一个包含 n 个非负整数的数组:A1、A2、...、AN。如何找到一对整数 Au, Av (1 ≤ u ans) { ans=arr[i] & arr[j
有人知道这段代码的正确解决方案吗? BOOL maximized = [myWindow isMaximized]; 最佳答案 也许看看 isZoomed 关于cocoa - NSWindow 最大化
当前有一个 MySQL 数据库,但遇到 MySQL 以 600% CPU 使用率运行的问题。 规范: 2.3 GHz Intel Xeon® E5-2686 v4 (Broadwell) 处理器或 2
我已将 Skype 配置为在 Windows 启动时最小化启动。 现在我需要通过全屏应用程序按钮中的一个按钮将 Skype 置于最前面。我有这段代码: For Each p As Proces
我已经有一段时间没有做任何生疏的程序了。我正在研究代码以最大化和最小化其他应用程序。所以我找到了一些基本的东西,这就是我所拥有的,对原来的东西稍作修改。它希望我生成一些我所做的 FindWindow
我有一个 Windows CE 应用程序,它记录移动设备的击键。有一个用于初始化录制功能的按钮,它通过调用强制主窗口最小化: ShowWindow (hWnd, SW_MINIMIZE); 在最小化窗
我想显示一个占据尽可能多屏幕空间的对话框。 所以,这是一个示例: AlertDialog dialog = new AlertDialog.Builder(ctx)......create(); Wi
对Wndows用户来说,最小化/最大化/关闭按钮放在系统窗口的右上角是肯定的。而大多数朋友都是成为Wndows用户之后才成为Ubuntu用户的,因此Ubuntu程序窗口中将这些按键放在左上角使用起来
1.Ctrl+Alt+T调出终端 2.首先安装gconf-editor: sudo apt-get install gconf-editor 会提示叫你安装 gconf-editor 安装完成
Width最大化窗口时,屏幕的属性似乎没有更新到完全最大化的宽度。如果我调整它的大小,一切正常,但在最大化时就不行。 我的代码如下: private void Window_SizeChanged(o
我正在这个 fiddle 中使用指令和 = 绑定(bind)。我收到以下错误: Uncaught Error: 10 $digest() iterations reached. Aborting! W
是否有任何快捷方式可以最大化您在 Eclipse 中使用的选项卡?假设我正在处理代码的一部分,并且我想最大化选项卡而不是使用鼠标双击它,有人知道一种方法吗? 最佳答案 CtrlM 将最大化/恢复编辑器
在 Glassdoor 评论中遇到这个问题,觉得很有趣。 Given an integer consisting of 4 digits, we need to maximize it in 24 h
在 VB6 中,我创建了一个带有一些文本框、列表框和命令按钮的表单。我使用类似 的方法设置所有这些控件的 X-Y 位置 control2.Top = form.Height * 0.50 'set
到处都有人告诉我使用这个: frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 但问题是我的 JMenuBar 时断时续地消失(发生在我身上的奇怪错误),并且
我有一个 JDesktopPane 和一个 JInternalFrame。我希望 JInternalFrame 在创建后自动最大化。如何对“最大化窗口”事件进行硬编码? 最佳答案 使用JInterna
这个问题已经有答案了: JFrame doesn't take the actual screen size (2 个回答) 已关闭 3 年前。 我想最大化我的 JFrame,就像按下“关闭”旁边的按
我正在使用 vim 和 python 编程,并使用 tpope's vim-dispatch通过运行当前文件 :Dispatch python main.py 程序的打印输出被定向到quickfix窗
假设我们有一个名为 total 的 NSDecimal 常量,它包含 3.33333333 除以 10/3 的值。 10 和 3 都是NSDecimalNumber。我们希望 Swift 中的 NSD
有谁知道如何在发生特定操作后最大化 JFrame?我将在下面发布我的代码,我是一个不评论我的代码的恶魔(我会在某个时候这样做)但它应该是相当 self 解释的。我试图做的是在从菜单中选择选项后使框架最
我是一名优秀的程序员,十分优秀!