首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >背景与我的另一个JLabels的视觉重叠

背景与我的另一个JLabels的视觉重叠
EN

Stack Overflow用户
提问于 2019-06-18 23:59:27
回答 1查看 134关注 0票数 0

我正在用JFrame和JLabels创建一个非常简单的游戏,我设法让它工作,但在放置背景的时候,我发现了一个问题。我设置为背景的图像覆盖了我的另一个JLabels (它们仍然可以在后面工作,但你看不到它们)。

代码语言:javascript
复制
public class Game extends JPanel {
    
    Player p1 = new Player(this, 'a');
    Player p2 = new Player(this, 'r');
    
    public Game() {}
    
    public void move() {}
    public void gameOver() {}
    
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        p1.paint(g2d);
        p2.paint(g2d);
    }
    
    public static void main(String[] args) throws InterruptedException, IOException {

        BufferedImage img = ImageIO.read(new File(not relevant));
        JFrame frame = new JFrame("Window");
        JLabel background = new JLabel(new ImageIcon(img));
        Game game = new Game();
        
        
        frame.add(game);
        frame.add(background);
        
        
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        while (true) {
            game.move();
            game.repaint();
            Thread.sleep(10);
        }
    }

}

我认为问题来自于使用我的类游戏(这是一个“运行”游戏的类)作为JPanel,然后主要创建一个JFrame并添加它的…如果没有办法解决这个问题,我会改变它,但我想保持它现在的样子。我已经尝试交换了:

Frame.add(游戏);frame.add(背景);

但结果是:

游戏-->背景-->您只能看到背景,但仍然可以玩游戏

背景-->游戏-->你只能看到一个小窗口(没有大小,只有最小化,最大化和关闭),但仍然可以玩游戏。

我也尝试在Game类中创建背景图像,但它不起作用。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56653002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档