如何在Swing中自动调整窗口大小

4

我需要在JFrame中显示一张图片。如何使窗口大小根据图像大小自动调整。

1个回答

5

1.如果您将图像作为Icon / ImageIcon放置在JLabel中,则需要进行以下操作:

  • 必须测试具体监视器的JFrameMaximumSize,该监视器返回Toolkit

  • 如果PreferedSize小于MaximumSize大小,则调用JFrame#pack()

  • 否则必须调用setSize()

2.如果您使用Custom Painting将图像作为Icon / ImageIcon放置在JComponentJPanelJLabel中,则:

  • 那么此JComponent必须返回PreferredSize

    a) 如果PreferedSize小于MaximumSize,则调用JFrame#pack(),

    b) 否则必须调用JFrame#setSize()

    c) 假设您不使用Image#getScalledInstance

3.我建议在JLabel中使用Icon,唯一的问题是图像可能比屏幕上预期的尺寸小,但这没有任何问题,可以将图像居中到JLabel.CENTERJLabel


4
此外,还需考虑JScrollPane,在这里有演示。 - trashgod
3
这里展示了使用“自定义绘画”来说明点2的示例链接 - nIcE cOw
1
不太理解整体逻辑:a)通常,max非常大(因此在第一次近似中完全可以安全地忽略),远远大于pref b)JLabel返回合理的大小以供pref使用,pack是所需的全部内容c)_否则_将是pref> max,这将是一个必须修复的非法状态(而不是强制实际大小变大(不确定框架是否会遵守)1.和2.看起来非常相似(除了手动绘制和自定义覆盖getPref) - kleopatra

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