1

我目前正在为两个 Java GUI 事情苦苦挣扎。

情况是这样的:我正在使用 Swing 组件设计一个文字游戏。我有一个放置所有东西的主 JFrame(我的 GUI 类扩展了 JFrame)。我想做两件事:

第一种:我想设置一个图像作为主框架的背景图像,它必须显示在所有组件的后面。我四处寻找,但没有找到可行的解决方案。我尝试制作一个扩展的 BackGroundPanel 类,但是当我创建 BackGroundPanel 的一个实例时,我不知道如何使它成为框架的背景......我也没有找到从“图像”加载图像的好方法我的 src 文件夹中的目录...

第二:当程序启动时,用户会看到一个未装饰的 JDialog,需要禁用主框架,我想通了,但我也想让它变暗一点。我相信 GlassPane 应该是可能的,但我不知道如何设置 GlassPane 用一种颜色覆盖面板......

帮助将不胜感激,我认为我没有任何有用的代码可以分享,但我认为上面解释的情况给出了一个大致的想法?我只是希望有人能让我走上正轨,这样我就可以进一步解决这个问题!谢谢!

4

2 回答 2

2

我的 Main 类扩展JFrame了,它有一个BorderLayout.

将您添加BorderLayout到拥有JPanel中,例如GridLayout()

  1. AnimationTest说明了在组件后面绘制背景图像。

  2. Translucent示例说明使用AlphaComposite; 另请参阅此AlphaTest

于 2013-03-04T18:07:10.517 回答
0

那么对于您的第一个问题,您可以使用标签并设置它的图标:

JLabel lblimage = new JLabel("");

lblimage.setIcon(new ImageIcon(Main.class.getResource("/img/background.png")));
lblimage.setBounds(0, 0, 794, 711); //size of frame

contentPane.add(lblimage); //bottom
contentPane.add(component1); //middle low
contentPane.add(component2); //middle top
contentPane.add(component3); //top

至于你的第二个问题..你可能会做同样的事情,只需使用纯色图像并降低透明度,然后放在其他组件的顶部(虽然不确定这个解决方案)。

于 2013-03-04T17:24:24.153 回答