我正在使用java swing进行pacman游戏。 在我的代码中,我在组件面板中使用了2个jpanel 第一个是地图,第二个是pacman。 现在我试图在点击按钮时将pacman移动到其他单元格。它被移动但旧图片不会被删除。image before clicking,image after clicking 你可以看到新的pacman出现,但旧的并没有消失。还有一些垃圾也出现了。 这是为pacman创建jpanel的代码
JLabel pacman = new JLabel("", new ImageIcon("pacman.png"), JLabel.CENTER);
player = new JPanel(new BorderLayout());
player.setBounds(n*1, n*1, n, n);
//pacman.setOpaque(true);
pacman.setBackground(new Color(0, 0, 0, 0));
player.add(pacman);
//player.setOpaque(true);
player.setBackground(new Color(0, 0, 0, 0));
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 1000, 1000);
panel.setLayout(null);
panel.add(player);
panel.setBackground(new Color(0, 0, 0,0));
contentPane.add(panel);
按钮actionPreformed方法中的代码是:
panel.remove(player);
player.setLocation(new Point(n*1, n*2));
panel.add(player);
panel.revalidate();
panel.repaint();
我怎样才能使旧的pacman消失?
答案 0 :(得分:1)
player.setBackground(new Color(0, 0, 0, 0));
不要使用透明色。 Swing无法正确处理透明度。
为了完全透明,有一个简单的解决方案。只需使组件透明:
player.setOpaque( false );
如果您需要部分透明度,请查看Backgrounds With Transparency以获得解决方案。