2010-12-03 12 views
59

पर डबल-क्लिक ईवेंट मेरे पास के साथ JList है।जेएलआईस्ट तत्व

मैं JList में कोई आइटम कैसे बना सकता हूं, डबल-क्लिक ईवेंट पर प्रतिक्रिया करता हूं?

उत्तर

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()); 
     } 
    } 
}); 
+20

नोट का चयन करें उपयोग कर रहे हैं कि सूची खाली जगह है, तो और उपयोगकर्ता रिक्त स्थान पर डबल क्लिक करता है, यह सूची में अंतिम ऑब्जेक्ट पर डबल क्लिक का पता लगाएगा। यदि आप केवल उस सूची के क्षेत्र में क्लिक का पता लगाना चाहते हैं जिसमें आइटम शामिल हैं, तो आप इस तरह की जांच कर सकते हैं: आयत आर = list.getCellBounds (0, list.getLastVisibleIndex()); यदि (आर! = शून्य और&.c.contains (evt.getPoint())) { int अनुक्रमणिका = list.locationToIndex (evt.getPoint()); } –

+11

स्थान ToIndex का उपयोग करने के बजाय, वर्तमान में चयनित आइटम के लिए जेएलिस्ट से पूछना पर्याप्त नहीं होगा? यानी बस list.getSelectedIndex() पर कॉल करें। –

+0

@ कूकी मॉन्स्टर, अगर सूची बहुविकल्पीय है तो यह काम नहीं करेगी। –

10

मैं तुम्हें एक सरल उपाय है पता है, लेकिन आप एक अधिक सामान्य समाधान है कि आप कीबोर्ड के साथ ही माउस का उपयोग करने की अनुमति देगा के लिए List Action की जाँच कर सकते हैं। उचित जीयूआई डिज़ाइन को उपयोग को किसी भी दृष्टिकोण का उपयोग करने की अनुमति देनी चाहिए।

9

(मोहम्मद Saligh, स्वीकार किए जाते हैं प्रतिक्रिया के आधार पर)

आप NetBeans

JList> ईवेंट खिड़की> mouseClicked

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); 
    } 
} 
संबंधित मुद्दे