使用JLabel设置背景图像的问题

问题描述 投票:-1回答:2

我正在尝试制作迷你游戏,并且该游戏可以选择地图。差异选择,选择差异图。每个选择都有自己的地图(背景图片)。对于背景图像,我使用JLabel和方法:setIcon()。我的问题是,当我设置图像时,所有组件都会被隐藏。这是图形:http://prntscr.com/qi5m8a(您可以看到只能看到图像)。对于地图选择,我使用此结构,这是图片:http://prntscr.com/qi5n4c带有事件的“播放”按钮是这样的:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    if(mapOneRadioButton.isSelected())
    {


        this.dispose();
        GameWindow game = new GameWindow();

        game.setVisible(true);
        game.setLocationRelativeTo(null);
        backgroundLabelGameWin.setIcon(new javax.swing.ImageIcon(getClass().getResource("/main/earthProject.gif")));

    }else if(mapTwoRadioButton.isSelected())
    {

    }else if(mapTreeRadioButton.isSelected())
    {

    }else if(mapFourRadioButton.isSelected())
    {

    }else if(mapFiveRadioButton.isSelected())
    {

    } 
}  

[我使用JPanel在其中添加JLabel作为背景图像,而我使用JLayeredPanel用于其余组件。

我的问题/问题是,如何在不破坏我的画框顺序的情况下更改/设置图像?我的意思是,我想在后台更改/设置图像,以便可以看到我的所有组件。请帮助我,我不知道如何解决此问题。

java image swing background jlabel
2个回答
0
投票

对于背景图像,我使用JLabel和方法:setIcon()。我的问题是,当我设置图像时,所有组件都会被隐藏。

两个选项:

  1. 将组件添加到JLabel。然后,组件将在图像上方绘制。这种方法的局限性在于组件必须适合图像内部,因为图像始终以其实际大小绘制。

  2. 通过覆盖面板的paintComponent(...)方法,在JPanel上自定义绘画图像,然后调用Grapics.drawImage(...)方法。然后将您的组件添加到面板中。有关提供此支持的类,请参见Background Panel。当您可以缩放图像以填充面板时,这提供了更大的灵活性。


0
投票

如果您更改JPanel的背景而不是使用JLabel作为图像,会更好。您不能直接更改JPanel的背景。但是你可以参考以下链接来做到这一点http://www.java2s.com/Code/Java/Swing-JFC/Panelwithbackgroundimage.htm

© www.soinside.com 2019 - 2024. All rights reserved.