在你提问之前,我已经在网站上查找了这个问题,遗憾的是,所提供的解决方案对我没有用,所以我必须再次提出要求,看看我能做错什么。
我得到的最近的成就是我得到的这个(我最应该使用一个尝试并在我检索图像时捕获,我将保存以供以后使用):
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。
感谢您阅读!
答案 0 :(得分:3)
您可以尝试使用Darryl的Stretch Icon进行动态调整大小。
否则你会扩展JComponent(而不是JLabel),你是否拥有自定义的图像绘制。有关如何绘制缩放图像的示例,请参阅Background Panel。
答案 1 :(得分:1)
我建议您尝试创建或查找更大的图块图像。如果你试图拉伸图像,你会降低它,但这不是缩小的。
答案 2 :(得分:0)
此代码看起来不错。 这是代码审查建议: