59
A
답변
115
String[] items = {"A", "B", "C", "D"};
JList list = new JList(items);
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
// Double-click detected
int index = list.locationToIndex(evt.getPoint());
} else if (evt.getClickCount() == 3) {
// Triple-click detected
int index = list.locationToIndex(evt.getPoint());
}
}
});
10
난 당신이 간단한 해결책을 알고 있지만, 당신은 키 보드뿐만 아니라 마우스를 사용할 수 있도록하는 일반적인 솔루션을 List Action을 체크 아웃 할 수 있습니다. 적절한 GUI 디자인을 사용하면 두 가지 방법 중 하나를 사용할 수 있습니다. (모하메드 Saligh, 허용 응답 기준)
9
당신이 넷빈즈
선택의 JList> 이벤트 창>
private void jListNicknamesMouseClicked(java.awt.event.MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
int index = list.locationToIndex(evt.getPoint());
System.out.println("index: "+index);
}
}
주의 mouseClicked를 사용하는 경우 그 목록이 빈 공간이있는 경우, 사용자가 빈 공간을 두 번 클릭하면 목록의 마지막 객체에 대한 더블 클릭이 감지됩니다. 항목이 포함 된 목록 영역의 클릭 만 감지하려면 다음과 같이 확인하십시오. 사각형 r = list.getCellBounds (0, list.getLastVisibleIndex()); if (r! = null && r.contains (evt.getPoint())) { int index = list.locationToIndex (evt.getPoint()); } –
locationToIndex 대신 현재 선택된 항목에 대해 JList에 질문하는 것으로 충분하지 않습니까? 즉, list.getSelectedIndex()를 호출하면됩니다. –
@CookieMonster, 목록이 다중 선택 인 경우 작동하지 않습니다. –