我知道这已被问过很多次了,但我到处搜索过,但仍未找到答案。我对Java比较陌生。我有
JButton b[][];
稍后,我指定b[3][3].setIcon(path)
。但是,path
处的图片始终是JButton
大小的实际图片的一小部分。我想要的是重新调整图像大小以适应JButton
的大小。有没有办法做到这一点?顺便说一句,这里的一些代码(我认为)很重要:
int n = 8;
int m = 8;
...
b = new JButton[n][m];
setLayout(new GridLayout(n,m));
for (int y = 0;y<m;y++){
for (int x = 0;x<n;x++){
b[x][y] = new JButton(" ");
b[x][y].addActionListener(this);
add(b[x][y]);
b[x][y].setEnabled(true);
}
}
答案 0 :(得分:1)
你显然需要的是Icon Resizer方法,这与我在下面提供的方式有关:
public static Icon resizeIcon(ImageIcon icon, int resizedWidth, int resizedHeight) {
Image img = icon.getImage();
Image img = img.getScaledInstance(resizedWidth, resizedHeight, java.awt.Image.SCALE_SMOOTH);
return new ImageIcon(img);
}
您可以在图片已应用于JButton后调用此方法, 后将其添加到任何面板:
b[3][3].setIcon(path)
b[3][3].setIcon(resizeIcon((ImageIcon) b[3][3].getIcon(),
b[3][3].getWidth() - 15, b[3][3].getHeight() - 15));
或者你可以这样做:
ImageIcon img = new ImageIcon("MyImage.png");
Icon icn = resizeIcon(img, b[3][3].getWidth() - 15, b[3][3].getHeight() - 15);
b[3][3].setIcon(icn);
答案 1 :(得分:1)
我想要的是重新调整图像大小以适应JButton的大小。
您可以使用Stretch Icon类。
它将允许您自动调整图标大小:
调整大小是动态完成的,因此您不需要缩放图像。