3

我正在尝试设置带有按钮的菜单系统;但是,只有一个按钮显示正确。

好吧,我发现了问题,我无法从一个类或其子类创建 Button 类的多个实例。如果我这样做,它不会正确创建第二个实例,然后它将缺少背景图像。这可能与我将 Button 类设为标准类的事实有关吗?

这是 Button 类的主要部分,我在其中取出了返回此类中事物值的 get 方法。

public class Button {
private int x, y;
private int width, height;
private Image sprite;
private data.ImageControl Image = new data.ImageControl();
private String text = "";

public Button() {
    sprite = Image.getImage("game/menu/btn.png");
}

public void setImage(String file) {
    sprite = Image.getImage(file);
}

public void draw(Graphics2D g) {
    g.drawImage(sprite, x, y, null);
    Font_LARGE font = new Font_LARGE();

    //Find text pos
    int stringX, stringY;
    int textWidth;
    textWidth = text.length() * 14;

    stringX = x + ((width / 2) - (textWidth / 2));
    stringY = y + ((height / 2) - 8);

    font.drawString(g, text, stringX, stringY);
}

这是我从中获取图像的代码:

public Image getImage(String filename) {
    Image img;
    try {
        ImageIcon i = new ImageIcon(getClass().getResource("sprite/" + filename));
        img = i.getImage();
    } catch(Exception e) {
        e.printStackTrace();
        System.err.println("ERROR - Unable to load image at " + filename + " loading empty image.");
        ImageIcon i = new ImageIcon(getClass().getResource("sprite/Physix/noImage.png"));
        img = i.getImage();
    }

    return img;
}
4

2 回答 2

0

我现在通过在按钮类之外绘制按钮背景来解决问题。我仍然不知道为什么它不起作用,但是这样它就起作用了。

于 2012-12-25T07:22:53.837 回答
0

x 和 y 的位置是什么?

在我看来,您在另一个按钮之上绘制了一个按钮。

于 2012-12-24T19:41:51.763 回答