私は、Java swingを使用してパックマンゲームを作っています。 私のコードでは、コンポーネントパネルの2つのjpanelsを使用します。 最初のものはマップのもので、2番目のものはパックマンのものです。 ボタンがクリックされたときにパックマンを他のセルに移動しようとしました。移動はされましたが、古い画像は削除されません。 image before clicking、image after clicking 新しいパーマンが表示されていますが、古いものは表示されませんでした。ゴミ箱も出てきました。 これはボタンactionPreformedメソッド内パックマンのためのJPanelを作成するためのコード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);
コードでは、次のとおりです。
panel.remove(player);
player.setLocation(new Point(n*1, n*2));
panel.add(player);
panel.revalidate();
panel.repaint();
どのように私は古いパックマンが消えることができますか?
Java GUIは、異なるロケールの異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –