【问题标题】:Fit setIcon to JButton Array使 setIcon 适合 JButton 数组
【发布时间】:2016-01-23 21:38:17
【问题描述】:

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

【问题讨论】:

  • 这是一个非常复杂的主题,您可以开始查看 thisthisthis 以获得一些想法
  • 好的,我去看看。

标签: java swing icons jbutton


【解决方案1】:

我想要的是重新调整图像大小以适合 JButton 的大小。

您可以使用Stretch Icon 类。

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

  1. 填充按钮的空间,或
  2. 保持图标比例,填充按钮空间

调整大小是动态完成的,因此您不需要缩放图像。

【讨论】:

  • 我用过,但是当我用ImageIcon red = new StretchIcon(path)时,它不起作用......
  • 那么你的路径错误或者你没有下载这个类,因为它不是JDK的一部分。
  • StretchIcon 类。
  • 好的,我做对了,但我确实收到了包错误..这可能是为什么?如果是这样,我如何获得包裹?
  • @k97513,然后去掉包语句。除非您想将类放在单独的包中,否则不需要它。
【解决方案2】:

你显然需要一个图标调整器方法,就像我在下面提供的那样:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2013-07-06
    • 2022-01-06
    • 2016-08-25
    相关资源
    最近更新 更多