我正在使用Java Swing创建游戏,并且发现需要图形显示当前发生的情况。当前显示使用JButton的网格来表示战场上的图块。是否可能使用定制的像素艺术GIF在JButton上显示浮动/消失的损坏数字?如果是这样,我将如何实施呢?
tonggexiaowu 回答:有没有一种方法可以使用java.swing来实现浮动损伤数?
几乎所有Swing组件都可以扩展以更改其表示形式。
创建一个扩展JButton
的按钮类,并覆盖其paintComponent
方法以显示所需的损坏。此方法会收到一个Graphic
(实际上是Graphics2D
的一个实例),如果该损坏为 active ,则可以在其上造成损害。
非常简单的示例:
public class DamageButton extends JButton {
private String damage = null;
public DamageButton(String text) {
super(text);
}
public void setDamage(String damage) {
this.damage = damage;
System.out.println(damage);
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (damage != null) {
Graphics2D gg = (Graphics2D) g.create();
try {
gg.setColor(Color.RED);
gg.drawString(damage,10,10);
} finally {
gg.dispose();
}
}
}
}
创建一个新的Graphics
(gg
),这样g
的设置就不会更改,也不需要恢复。
使用一些文本调用setDamage()
使其显示在按钮上,或者使用null
调用以取消效果。
可以轻松(或多或少)添加动画或其他效果。请注意,给定的Graphics2D
的裁剪区域设置为按钮的尺寸。