所以我为纸牌游戏 War 创建了一个程序。一切都完成了,除了我想添加一个背景。问题是我不知道如何添加背景图片,以便其他 JLabels 和 JButtons 仍然出现在图片的顶部。是否可以为我设置背景图片,以便其他面板也显示在顶部?到目前为止,我的程序是这样的:
public War()
{
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("WAR");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
//Set up for background image
Background = new JPanel();
Background.add(new Background("Background.png"));
frame.add(Background);
Background.setLayout(new OverlayLayout(Background));
cardPanel = new JPanel (new GridLayout(2,1));
///create labels and init with card back
String strCard1 = "cardback.png";
String strCard2 = "cardback.png";
lblPlayer1Card = new JLabel(new ImageIcon(strCard1));
lblPlayer2Card = new JLabel(new ImageIcon(strCard2));
cardPanel.add(lblPlayer1Card);
cardPanel.add(lblPlayer2Card);
//Create panels for when war is played
warPanel = new JPanel (new GridLayout(2, 3));
String emptycards = "blankcard.png";
player1war1 = new JLabel(new ImageIcon(emptycards));
player1war2 = new JLabel(new ImageIcon(emptycards));
player1war3 = new JLabel(new ImageIcon(emptycards));
player2war1 = new JLabel(new ImageIcon(emptycards));
player2war2 = new JLabel(new ImageIcon(emptycards));
player2war3 = new JLabel(new ImageIcon(emptycards));
warPanel.add(player1war1);
warPanel.add(player1war2);
warPanel.add(player1war3);
warPanel.add(player2war1);
warPanel.add(player2war2);
warPanel.add(player2war3);
// Create a panel
btnPanel = new JPanel(new GridLayout(2,2));
//set up next card button
JButton btnNext = new JButton("Next Card");
NextListener listener1 = new NextListener();
btnNext.addActionListener(listener1);
//set up new game button
JButton btnNewGame = new JButton("New Game");
NewGameListener listener2 = new NewGameListener();
btnNewGame.addActionListener(listener2);
//Sets up new panel showing size of main pile and discard pile of both players
statusPanel = new JPanel(new GridLayout(4,2));
//status labels that show the size of piles
status1 = new JLabel("");// Size of player 1's main pile
status2 = new JLabel("");//Size of player 1's discard pile
status3 = new JLabel("");//Size of player 2's main pile
status4 = new JLabel("");//Size of player 2's discard pile
statusWar = new JLabel("");//Status label that shows the winner of War
statusEmpty1 = new JLabel(""); // Creates empty status to put space between War status and size statuses
statusEmpty2 = new JLabel(""); // Creates empty status to put space between War status and size statuses
statusBar = new JLabel("");
//Adds the labels to the panels
btnPanel.add(btnNext);
btnPanel.add(btnNewGame);
btnPanel.add(statusBar);
statusPanel.add(status1);
statusPanel.add(status2);
statusPanel.add(status3);
statusPanel.add(status4);
statusPanel.add(statusEmpty1);
statusPanel.add(statusEmpty2);
statusPanel.add(statusWar);
cardPanel.setOpaque(false);
btnPanel.setOpaque(false);
statusPanel.setOpaque(false);
warPanel.setOpaque(false);
//The layout of the frame
Background.add(cardPanel, BorderLayout.WEST);
Background.add(btnPanel, BorderLayout.SOUTH);
Background.add(statusPanel, BorderLayout.NORTH);
Background.add(warPanel, BorderLayout.EAST);
frame.setVisible(true);
}