私の友人が私にプロジェクトを送ってくれて、もっときれいにするように頼みました。プロジェクトは、画像によって配置されたいくつかのラベルを持つコンテナーを持つ JFrame であり、いくつかのパラメーターに従って変化します。私がやろうとしたことは、すべてのラベルをJFrameのJPanel、問題は、ラベルが変更されないことです。パネルをいっぱいにしてマップを作成すると正常に動作しますが、画像を切り替える必要がある場合、ロガーでチェックしたため、論理は問題ありません(System.out.println のもの) で、正常に動作しています。また、私が作成した JPanel は、NetBeans のパレット (ドラッグ アンド ドロップ) で作成されたと言わざるを得ません。
public final void createMap(int map[][]) {
myGrid = new GridLayout(13, 16, 0, 0);
myLabel = new JLabel[13][16];
myPanel.setLayout(myGrid);
//Start doing some stuff to fill my JPanel with labels placing images on them.
//This works fine
for(int i = 0; ...) {
for(int j = 0; ...) {
if(map[i][j]==0) {
myLabel[i][j].setIcon(new javax.swing.ImageIcon(getClass().getResource("/ImageA.jpg")));
}
if (map[i][j]==1) {
myLabel[i][j].setIcon(new javax.swing.ImageIcon(getClass().getResource("/ImageB.jpg")));
}
.
.
.
myPanel.add(myLabel[i][j]);
myPanel.revalidate();
}
}
//End doing some stuff
}
//The problem comes here when I try to switch images
public final void play() {
if(something) {
//The position 2,3 "switches" its image with the position 2,4
myLabel[2][3].setIcon(new javax.swing.ImageIcon(getClass().getResource("/ImageA.jpg")));
myLabel[2][4].setIcon(new javax.swing.ImageIcon(getClass().getResource("/ImageB.jpg")));
}
//THIS IS NOT WORKING
myPanel.validate();
}
myPanel.validate、.revalidate()、.repaint() を試しましたが、どれも機能しません。
どんな助けでも大歓迎です。前もって感謝します。