gpt4 book ai didi

java - 其他面板的背景图片问题

转载 作者:行者123 更新时间:2023-12-04 05:18:29 25 4
gpt4 key购买 nike

所以我为纸牌游戏 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);
}

最佳答案

创建你自己 JLabel .加载图像并将其应用到标签 ( JLabel#setIcon )。

将标签布局管理器设置为您需要的。像往常一样将其他组件添加到标签中。

将标签添加到框架。

看看

  • Place JLabel on top of JLabel with image in
  • More than one JPanel in a Frame / having a brackground Image and another Layer with Components on the top

  • 例如

    关于java - 其他面板的背景图片问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943810/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com