6

JListクリック位置を使用して、からコンポーネントをフェッチするにはどうすればよいですか?

いくつかのパネルとラベルを挿入する独自のリストセルレンダラーがあります。ここで、たとえばユーザーがクリックしたラベルを取得したいと思います。

メソッドを試しましたlist.getComponentAt(evt.getPoint());が、全体のみが返されますJList

4

2 に答える 2

2

ユーザーがセルの外側をクリックしない限り、MadProgrammer は正常に動作します。その場合、locationToIndex() によって返されるインデックスは最後のインデックスのセルになるため、変換されたポイントはレンダリングされたコンポーネントの「下」になります。

ユーザーが実際にセルをクリックしたかどうかを確認するには、次のことを行う必要があります。

int index = list.locationToIndex(p);
if (index > -1 && list.getCellBounds(index, index).contains(p)){
    // rest of MadProgrammer solution
    ...
}
于 2014-08-21T12:18:12.157 に答える