Java数组-同一对象的不同值

Java数组-同一对象的不同值,java,arraylist,indexing,slick2d,Java,Arraylist,Indexing,Slick2d,使用Slick2D,我循环浏览我的按钮并突出显示当前悬停的按钮。为此,我保存了一个按钮的索引,该按钮触发了onHover事件。但是,当我将鼠标悬停在第一个按钮上时,它会高亮显示最后一个按钮。将鼠标悬停在第二个按钮上会突出显示倒数第二个按钮,等等。但是,如果我使用键盘更改选定的按钮,它将非常有效 以下是保存索引的方法: public void onHover(int x, int y) { Button but; for (int i = 0; i < b.size(); i

使用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 onHover(int x,int y){
按钮但是;
对于(int i=0;i
还有一个比较它们:

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);
        }
    }
}
public void draw(图形g){
按钮但是;
对于(int i=0;i
有什么特别的方法可以做到这一点吗

编辑:我找到了问题所在

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

我仍然不知道为什么这些值不同(因为Slick2D基于LWJGL),但是为了绕过这个问题,我现在使用HEIGHT-Mouse.getY()来确定正确的位置


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

嗯,使用foreach循环和后面列表上的
.indexOf()
,这是相当奇怪的;这里的普通
for
循环将更有效、更可读;)@fge我第一次使用了一个平原;但我也有同样的问题。。。因此,为了测试的目的,我尝试使用了一个for-each。我用简单的for循环编辑了我的问题:)你的按钮是哪种类型的集合?有秩序的保证吗?@NathanielFord它们在一个数组列表中,我认为它们是秩序的保证。你应该调试/注销实际传递给
choice
draw
的索引。