根据JPanel图像内容调整JFrame的大小?

时间:2010-11-07 17:06:43

标签: java user-interface resize jframe jpanel

我正在使用NetBeans开发一个简单的图像浏览器。我有一个ImageBrowser类,它扩展了JFrame(通过右键单击NetBeans项目创建它,然后是New - > JFrame Form),里面是JPanelJToolbarJButtons生成为用户选择的目录中的图像缩略图。

单击图像缩略图会在此主JPanel上显示整个图像。基本上图像的大小不同,我希望JFrame(即整个窗口)自动调整到图像的大小。

每次JPanel内容发生变化时(例如,当用户点击缩略图并触发ActionEvent时),我都尝试调用.pack()作为主`JFrame',但它给了我这个错误:

  

非静态方法pack()无法从静态内容中引用

所以我宁愿坚持这一点,我想知道是否有办法做到这一点。如果有,是否也可以在JFrame窗口大小上设置最大限制?

至于布局,JFrame是一个免费的布局,使用NetBeans GUI开发人员构建。

1 个答案:

答案 0 :(得分:0)

  

非静态方法pack()无法从静态内容中引用

不要在您的应用程序中使用静态方法。没有必要这样做。假设您遵循Swing tutorial examples中的示例代码,唯一的静态方法应该是main()方法和“createAndShowGUI”方法。

您可以使用

找到要打包的窗口()
SwingUtilities.windowForComponent(...);

您从ActionEvent获取源代码,然后使用该组件查找要打包的窗口。

  

是否也可以在JFrame窗口大小上设置最大限制?

做包()。然后,如果尺寸超出限制,您可以通过在窗口上调用setSize()来覆盖最大尺寸。

我也同意,每次更改图像时,不断改变窗口的大小并不是一个好的设计。

我会将图像添加到JLabel并将标签添加到滚动窗格,当图像大于框架的大小时,该标签会出现。