繁体   English   中英

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

[英]Resize JFrame according to JPanel image content?

我正在使用NetBeans开发一个简单的图像浏览器。 我有ImageBrowser类,它扩展了JFrame (通过右键单击NetBeans项目,然后单击“新建”->“ JFrame窗体”来创建它),并且在其中是一个JPanel和一个JToolbar其中JButtons是从用户选择的目录中生成的图像缩略图。

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

我尝试每次JPanel内容更改时(即,当用户单击缩略图并触发ActionEvent时)为主JFrame调用.pack() ,但这给了我这个错误:

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

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

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

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

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

您可以使用以下方法找到要打包的窗口

SwingUtilities.windowForComponent(...);

您可以从ActionEvent中获取源代码,然后使用该组件查找要打包的Window。

是否还可以设置JFrame窗口大小的最大限制?

做pack()。 然后,如果尺寸超出限制,则始终可以通过在Window上调用setSize()来覆盖最大尺寸。

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

我将图像添加到JLabel并将标签添加到滚动窗格,以使当图像大于框架大小时该滚动条可以显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM