有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

arraylist Java为同一对象数组不同的值

使用Slick2D,我循环浏览我的按钮并突出显示当前悬停的按钮。我通过保存其onHover事件触发的按钮的索引来实现这一点。但是,当我将鼠标悬停在第一个按钮上时,它会高亮显示最后一个按钮。将鼠标悬停在第二个按钮上会突出显示倒数第二个按钮,等等。但是,如果我使用键盘更改选定的按钮,它将非常有效

以下是保存索引的方法:

public void onHover(int x, int y) {
    Button but;
    for (int i = 0; i < b.size(); i++) {
        but = b.get(i);
        if (but.isClicked(x, y)) {
            choice = i;
            return;
        }
    }
}

还有一个比较它们:

public void draw(Graphics g) {
    Button but;
    for (int i = 0; i < b.size(); i++) {
        but = b.get(i);
        if (i == choice) {
            but.drawHighlighted(g);
        } else {
            but.draw(g);
        }
    }
}

有什么特别的方法可以做到这一点吗

编辑:我找到了问题所在

老鼠。LWJGL中的getY()返回窗口的高度减去鼠标的Y位置;而从Slick2D(我与draw方法一起使用)释放鼠标(按钮,x,y)返回“真实”y位置。 但两者都返回与x位置相同的值

我仍然不知道为什么这些值不同(因为Slick2D是基于LWJGL的),但是为了避免这个问题,我现在使用高度鼠标。getY()以获得正确的位置

谢谢大家帮我解决这个问题


共 (0) 个答案