在你问之前,我已经在网站上查找了这个问题,不幸的是,提供的解决方案对我不起作用,所以我必须再次求助,看看我可能做错了什么。
我所拥有的代码最接近的成就是这样的(当我检索图像时,我绝对应该使用 try 和 catch,我将其保存以备后用):
private void asignarTile(Tile tile, JPanel panel){
if(tile.getTipo() == 0){
ImageIcon ii = new ImageIcon("pasto.png");
Image image = ii.getImage();
Image newimg = image.getScaledInstance(32, 32, java.awt.Image.SCALE_SMOOTH);
ii = new ImageIcon(newimg);
tile.setIcon(ii);
panel.add(tile);
}
}
现在,尽管它是健忘的,但我必须提到代码确实适用于特定大小,但之后它不会使图像的大小适应 JLabel,这意味着首先我将拥有这个:
但在我调整它的大小后,我会有这个:
我认为注意到 Tile 扩展了 JLabel 会很有用,这些是更改(columna 表示列,fila 表示行,也许我应该开始完全用英文编写代码)
package gui;
import javax.swing.JLabel;
public class Tile extends JLabel{
private int fila, columna, tipo;
public int getFila() {
return fila;
}
public void setFila(int x) {
this.fila = x;
}
public int getColumna() {
return columna;
}
public void setColumna(int y) {
this.columna = y;
}
public int getTipo(){
return tipo;
}
public void setTipo(int tipo){
if(tipo >= 0 || tipo <= 6)
this.tipo = tipo;
}
public Tile(int x, int y, int tipo) {
this.setFila(x);
this.setColumna(y);
this.setTipo(tipo);
}
}
作为一个结论,我必须说,我已经考虑将 componentListener 添加到 Tile,因为它扩展了 JLabel,但我也尝试将图像大小调整为标签的尺寸无济于事,因为它给了我一个例外,说它的尺寸是0,好吧,它们不能为 0。
感谢您的阅读!