DefaultListModel
ile JList
sahibim.JList öğesinde çift tıklatma olayı
JList
öğesinde bir öğeyi çift tıklatma etkinliğine nasıl yapabilirim?
DefaultListModel
ile JList
sahibim.JList öğesinde çift tıklatma olayı
JList
öğesinde bir öğeyi çift tıklatma etkinliğine nasıl yapabilirim?
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());
}
}
});
Sana basit bir çözüm var biliyorum ama anahtar kurulu yanı sıra fare kullanmanızı sağlayacak daha genel bir çözüm için List Action kontrol etmek isteyebilir. Uygun GUI tasarımı, her iki yaklaşımın da kullanılmasına izin vermelidir. (Mohamed Saligh kabul tepki dayalı)
NetBeans
seçin JList> Etkinlikler pencere>
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);
}
}
Not mouseClicked kullanıyorsanız, söz konusu liste boş yer olup olmadığını, ve bir kullanıcı boş alana çift tıklar, bu listede son nesneyi çift tıklatır. Öğeleri içeren listede yalnızca tıklamaları algılamak isterseniz, şu şekilde kontrol edebilirsiniz: Rectangle r = list.getCellBounds (0, list.getLastVisibleIndex()); if (r! = Null && r.contains (evt.getPoint())) { int dizini = list.locationToIndex (evt.getPoint()); } –
JList'i, şu anda seçili olan öğe için locationToIndex yerine sormak yeterli olmaz mıydı? yani sadece list.getSelectedIndex() öğesini çağırın. –
@CookieMonster, liste çok yönlü ise işe yaramaz. –