如何解决如何在JButton的较大imageIcon上设置较小的ImageIcon?同时我希望两个图像都可见
我想为《 Tanks Game》编写代码,但在现有ImageIcon上设置tank.jpg时遇到问题,因为我希望这两个图像都可见并显示给用户,就像:JButton block = new JButton () ;
block.setIcon(new ImageIcon(\"ground.png\")) ;// sets the first image
block.setIcon(new ImageIcon(\"tank.png\")) ;// sets the second image
但是,如果我这样编写代码,第二个setIcon将替换第一个setIcon,这是我不想要的,任何想法如何一次在JButton上具有2个图标?谢谢
解决方法
最简单的方法是将两个图标合并为一个。您可以手动执行此操作(如果只有很少的组合),也可以自己编写
Icon
实现。
您可以例如通过以下实现将两个图标并排对齐:
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
public class DoubleIcon implements Icon {
private static final int ICONSPACING = 4;
private final Icon i1;
private final Icon i2;
public DoubleIcon(Icon i1,Icon i2) {
this.i1 = i1;
this.i2 = i2;
}
@Override
public void paintIcon(Component c,Graphics g,int x,int y) {
i1.paintIcon(c,g,x,y + (getIconHeight() - i1.getIconHeight()) / 2);
i2.paintIcon(c,x + ICONSPACING + i1.getIconWidth(),y + (getIconHeight() - i2.getIconHeight()) / 2);
}
@Override
public int getIconWidth() {
return i1.getIconWidth() + ICONSPACING + i2.getIconWidth();
}
@Override
public int getIconHeight() {
return Math.max(i1.getIconHeight(),i2.getIconHeight());
}
}
, 复合图标可让您更加灵活地绘制图标。
, 您需要先合并图像,然后再设置按钮图标。您如何做取决于您想要如何将它们组合在一起。您是想要一个在另一个之上还是另一个?无论哪种方式,您都需要执行以下操作:
BufferedImage groundImage = ImageIO.read(new File(\"ground.png\");
BufferedImage tankImage = ImageIO.read(new File(\"tank.png\"));
Graphics2 g2 = groundImage.createGraphics();
g2.drawImage(x,y,tankImage);
然后,groundImage将在坐标(x,y)的顶部绘制tankImage。此时,您可以将按钮图标设置为groundImage。 (注意:我刚刚在iPad上回答了这个问题,因此代码可能完全正确)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。