将setIcon设为JButton数组

时间:2016-01-23 21:38:17

标签: java swing icons jbutton

我知道这已被问过很多次了,但我到处搜索过,但仍未找到答案。我对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);
                   }
           }

2 个答案:

答案 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类。

它将允许您自动调整图标大小:

  1. 填充按钮的空间,或
  2. 保持图标比例并填充按钮的空格
  3. 调整大小是动态完成的,因此您不需要缩放图像。