首页 > 解决方案 > 有没有办法用 java.swing 实现浮动损坏数字?

问题描述

我正在使用 Java Swing 创建一个游戏,并且我发现此时需要图形显示正在发生的事情。当前显示使用 JButton 网格来表示战场上的图块。是否可以使用定制的像素艺术 GIF 在 JButton 上显示浮动/消失的损坏数字?如果是这样,我将如何实施?

标签: javaswinggraphicsjbutton

解决方案


几乎所有的 Swing 组件都可以扩展来改变它的表现形式。

创建一个自己的按钮类扩展JButton并覆盖其paintComponent方法以显示所需的损坏。此方法接收一个Graphic(实际上是 的实例Graphics2D),您可以在其上造成伤害,如果一个是活动的。

非常简单的例子:

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的剪切区域设置为按钮的尺寸。


推荐阅读