[英]How do you add a JPanel onto another JPanel that has graphics?
基本上,我想做的就是使用paintComponent()方法将一个JPanel添加到另一个在其上绘制了图形的JPanel上。 但是我试图添加的JPanel没有显示,因为它被带有图形的JPanel所掩盖。
如何做到这一点,以便在将JPanel添加到一个带有图形的JPanel时,它将在前面显示JPanel而不是被Graphics遮盖?
感谢所有答案! :)
如果您需要代码,请告诉我,我很乐意将其放在此处。
好了,这里是代码:
package javavideogame; public class Game extends JPanel implements ActionListener, Runnable { public Game(MainCharacter character) { setLayout(null); setFocusable(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(ground, 0, 0, this); g.drawImage(character.getImage(), character.getX(), character.getY(), this); g.setColor(Color.RED); g.drawRect(10, 10, character.getMaxHealth(), 10); g.fillRect(10, 10, character.getHealth(), 10); g.dispose(); } public void getInventoryScreen() { Main.inv = new Inventory(); Main.game.add(Main.inv); } }
这是我要添加到游戏JPanel中的JPanel的代码
public class Inventory extends JPanel { public Inventory() { setLayout(null); setSize(400, 300); setBackground(Color.BLACK); addKeyListener(this); setFocusable(true); } }
提醒一下:java.awt和javax.swing混合不好。 当您在一个面板上绘画东西并尝试向其添加JPanel时,您肯定会在某个地方遇到问题。 更好的解决方案是拥有2个不同的JPanel,一个用于图形,另一个用于库存。
像这样:
JPanel mainPanel = new JPanel(); //will hold BOTH panels
JPanel gamePanel = new Game(myCharacter); //declare game panel
JPanel inventoryPanel = new Inventory(); //declare inventory panel
//set up some layout
mainPanel.setLayout(new GridLayout(2, 1));
//add the graphics panel, then add the inventory
mainPanel.add(gamePanel);
mainPanel.add(inventoryPanel);
这将使您的挥杆和awt组件不会混合,并为您节省很多麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.