我的一个朋友给我发了一个项目并要求我让它更干净,该项目是一个带有容器的 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() 并且没有任何工作。
欢迎任何帮助。先感谢您。