ホームページ >Java >&#&チュートリアル >パズル ゲームに新しい画像を追加した後、JPanel が更新されないのはなぜですか?
パズル ゲームでの JPanel 更新の問題
パズル ゲームで、更新された画像を追加したにもかかわらず JPanel が更新されないという問題が発生しました。問題を詳しく調べて解決策を提供しましょう。
この問題は、Img[] 内の画像を変更した後、addComponents メソッドが呼び出され、更新された画像を JPanel に追加するために発生します。ただし、このメソッドはパネルの再描画を呼び出さずにコンポーネントを追加するだけです。
JPanel が正しく更新されることを確認するには、コンポーネントを変更した後に再描画メソッドを明示的に呼び出して検証する必要があります。 repaint メソッドはレンダリング プロセスを開始し、validate はレイアウトが最新であり、コンポーネントに適用されていることを確認します。
更新されたコード:
public void addComponents(Img[] im){ this.removeAll(); for(int i=0; i<16; i++){ im[i].addActionListener(this); im[i].setPreferredSize(new Dimension(53,53)); add(im[i]); } this.validate(); this.repaint(); }
追加の考慮事項:
コードでは JButton を使用します。 Img クラスとして使用されますが、画像の描画には理想的ではありません。カスタム コンポーネントを描画するには、JPanel クラスを拡張することをお勧めします。あるいは、JLabel を使用して画像を表示することもできます。
また、画像をシャッフルすると、正しい画像が所定の位置に表示される可能性があります。これを回避するには、画像をランダムにシャッフルし、JPanel に追加する前に正しい場所にあるかどうかを確認します。
代替アプローチ:
を使用する代わりに、別々の画像を作成するだけでなく、1 つの画像をタイルにスライスして JPanel に追加することもできます。これにより、複数の画像を管理する必要がなくなり、更新プロセスが簡素化されます。
以上がパズル ゲームに新しい画像を追加した後、JPanel が更新されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。