我正在尝试制作迷你游戏,并且该游戏可以选择地图。差异选择,选择差异图。每个选择都有自己的地图(背景图片)。对于背景图像,我使用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用于其余组件。
我的问题/问题是,如何在不破坏我的画框顺序的情况下更改/设置图像?我的意思是,我想在后台更改/设置图像,以便可以看到我的所有组件。请帮助我,我不知道如何解决此问题。
对于背景图像,我使用JLabel和方法:setIcon()。我的问题是,当我设置图像时,所有组件都会被隐藏。
两个选项:
将组件添加到JLabel。然后,组件将在图像上方绘制。这种方法的局限性在于组件必须适合图像内部,因为图像始终以其实际大小绘制。
通过覆盖面板的paintComponent(...)
方法,在JPanel上自定义绘画图像,然后调用Grapics.drawImage(...)
方法。然后将您的组件添加到面板中。有关提供此支持的类,请参见Background Panel。当您可以缩放图像以填充面板时,这提供了更大的灵活性。
如果您更改JPanel的背景而不是使用JLabel作为图像,会更好。您不能直接更改JPanel的背景。但是你可以参考以下链接来做到这一点http://www.java2s.com/Code/Java/Swing-JFC/Panelwithbackgroundimage.htm