我有一个面板,其中构造函数我创建了object和imagelabel。它看起来像这样:
zloczyncy.get(0).setX(750);
zloczyncy.get(0).setY(312);
zloczyncy.get(0).Rysuj(zloczyncy.get(0).getX(),zloczyncy.get(0).getY(),zloczyncy.get(0).getImage(),this,2);
Rysuj方法:
void Rysuj(int picturex, int picturey, ImageIcon image, JLayeredPane panel, int w) {
imagelabel=new JLabel(image);
imagelabel.setBounds(picturex,picturey, image.getIconWidth(), image.getIconHeight());
panel.add(imagelabel,w,0);
panel.repaint();
}
然后在其他类中,在run方法中我想删除或只是让它消失,但没有任何反应。
public void run() {
try {
Mapa panel = new Mapa(frame);
for(Zloczynca z:zloczyncy){
if((this.getX()<=z.getX()+30)&&(this.getX()>=z.getX())){
if(this.getSzybkosc()>z.getSzybkosc()){
while((z.getZycie()>0)||(this.getZycie()>0)){
System.out.println("cios");
int ciosB=(this.getInteligencja()*this.getUmiejetnosciWalki())-z.getWytrzymalosc();
z.setZycie(z.getZycie() -ciosB);
int ciosZ=(z.getInteligencja()*z.getUmiejetnosciWalki())-this.getWytrzymalosc();
this.setZycie(this.getZycie() -ciosZ);
if(z.getZycie()<=0){
System.out.println("dead zloczynca1");
z.imagelabel.setIcon(null);
panel.repaint();
System.out.println("dead zloczynca1/2");
break;
}
if(this.getZycie()<=0){
System.out.println("dead bohater");
this.imagelabel.setBounds(0,0, image.getIconWidth(), image.getIconHeight());
break;
}
}
}
}
}
我已经尝试z.imagelabel.setIcon(null); panel.remove(z.imagelabel);
,即使我试图改变界限但没有任何作用,比如这个标签是不可触碰的或其他东西。当我在面板构造函数中删除它时,它的工作原理。它看起来并不复杂,但我不知道是什么问题。