2012-08-06 18 views
6
table.addSelectionListener(new SelectionAdapter() 
     { 
      public void widgetSelected(SelectionEvent e) 
      { 
       if(table.getSelectionIndex() != -1) 
       { 
        System.out.println(table.getSelectionIndex()); 
        TableItem item = table.getItem(table.getSelectionIndex()); 
        System.out.println(item.toString()); 
       } 
       else 
       {} 
      } 
     }); 

जब मैं अपने तालिका में किसी भी सेल पर क्लिक करें, केवल उस पंक्ति के प्रथम कक्ष का चयन किया और लौट आए और नहीं वास्तव में है कि सेलकैसे SWT मेज से एक कक्ष का चयन करने के

कृपया मुझे बताओ है मैं कैसे कर सकते हैं चयन और वास्तव में है कि सेल जो मैं चयन

कृपया छवि enter image description here

मैं 3 स्तंभ का चयन किया है को देखने से आइटम प्राप्त लेकिन यह पहले कॉलम

की TableItem लौटे

उत्तर

6

मैंने पहले ही समस्या का सामना करना पड़ा है, और यह है कि कैसे मैं इसे हल:

सबसे पहले, आप तालिका SWT.FULL_SELECTION` करना चाहिए;

फिर, आपको माउस स्थिति को पढ़कर चयनित सेल प्राप्त करना होगा (क्योंकि मूल swt तालिका श्रोताओं को चयनित सेल प्राप्त करने के लिए प्रदान नहीं करती है; कोई आइटम संभव है)।

table.addListener(SWT.MouseDown, new Listener(){ 
     public void handleEvent(Event event){ 
      Point pt = new Point(event.x, event.y); 
      TableItem item = table.getItem(pt); 
      if(item != null) { 
       for (int col = 0; col < table.getColumnCount(); col++) { 
        Rectangle rect = item.getBounds(col); 
        if (rect.contains(pt)) { 
         System.out.println("item clicked."); 
         System.out.println("column is " + col); 
        } 
       } 
      } 
     } 
    }); 
0

मैं निहारिका ग्रिड के साथ एक समान समस्या का सामना करना पड़ रहा था और पता चला आप तालिका वस्तु पर सेल चयन सक्षम करने के लिए है कि: यहाँ कोड है। यहां मेरी कोड लाइन है:

tableViewer.getGrid().setCellSelectionEnabled(true); 

शायद यह getTrid() द्वारा GetGrid() को प्रतिस्थापित करने का प्रयास कर सकता है। इसके लिए आपको चयन श्रोता को लागू करने की आवश्यकता नहीं होगी।

संबंधित मुद्दे