2011-01-25 17 views
19

क्लिक किया जाता है जब कोई उपयोगकर्ता एक JTable पर एक सेल क्लिक करता है, कैसे मैं पंक्ति और क्लिक किया कक्ष के स्तंभ यह पता लगाने करते हैं? मैं इस जानकारी को JLabel में कैसे दिखाऊं?निर्धारित कौन सा JTable सेल

उत्तर

1

आप addMouseListener() कोशिश किया था? मुझे आशा है कि आप स्विंग के जेटेबल का उपयोग करने के बारे में हैं।

+0

हाँ मैं स्विंग का उपयोग कर रहा हूं और नहीं, मैंने addMouseListener की कोशिश नहीं की है। अभी कोशिश करेंगे ... धन्यवाद। – Cristian

+0

यह थोड़ी उलझन में है, क्या आप कुछ पॉइंटर्स या कुछ लिंक दे सकते हैं? मैं खोज रहा हूं और नतीजा नहीं। मैं सिर्फ जेएलएबल में चयनित जेटीबल सेल की पंक्ति और कॉलम चाहता हूं ..... – Cristian

+0

मुझे नहीं लगता कि इस मुद्दे से निपटने का एक अच्छा तरीका है। MouseEvent कॉलम और पंक्ति में कनवर्ट करना इतना आसान नहीं होगा। डेवेलमैन का जवाब देखें। – jzd

17

आप पंक्ति और चयनित कक्ष के स्तंभ को पुनः प्राप्त करने JTable पर निम्न विधियों का उपयोग कर सकते हैं:

int rowIndex = table.getSelectedRow(); 
int colIndex = table.getSelectedColumn(); 

और मेज पर एक SelectionListener जोड़ने घटना को पकड़ने के लिए जब तालिका चयनित है।

+2

+1, ListSelectionListener को छोड़कर ListSelectionModel में जोड़ा गया है, JTable नहीं। – camickr

+6

तुम भी मामले में JTable के ColumnModel करने के लिए एक ListSelectionListener जोड़ने चयनित पंक्ति रहता ही है लेकिन उसका चयन कॉलम परिवर्तन करना चाहते हो सकता है: table.getColumnModel() getSelectionModel() addListSelectionListener (...);।। इस उत्तर के लिए – Uhlen

32

मौजूदा जवाब काम करता है, लेकिन वहाँ एक वैकल्पिक तरीका है कि बेहतर कार्य कर सकता है अगर आप सेल चयन सक्षम करने नहीं कर रहे है। अपने MouseListener अंदर, कुछ इस तरह करते हैं:

public void mouseClicked(java.awt.event.MouseEvent event) { 
    int row = theTable.rowAtPoint(event.getPoint()); 
    int col = theTable.columnAtPoint(event.getPoint()); 
    // ... 
+0

प्रॉप्स। getSelectedRow() या getSelectedColumn() राइट क्लिक का उपयोग करते समय काम नहीं करते हैं। – Jesus

+0

की तरह (लगभग) जावा स्विंग "समाधान" के सभी, सॉर्क्स: बेकार है, लेकिन काम करता है। – Felype

3

यह मेरे लिए काम कर रहा है !!!

jTable1.addMouseListener(new java.awt.event.MouseAdapter() { 
@Override 
public void mouseClicked(java.awt.event.MouseEvent evt) { 
    int row = jTable1.rowAtPoint(evt.getPoint()); 
    int col = jTable1.columnAtPoint(evt.getPoint()); 
    if (row >= 0 && col >= 0) { 


    } 
} 
}); 
0

मैंने पाया है कि जब कॉलम छिपे हुए हैं/पुनर्क्रमित columnAtPoint दिखाई स्तंभ अनुक्रमणिका देता है, जो मैं क्या जरूरत नहीं है। कोड जो मेरे लिए काम करता है

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint())); 
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint())); 
संबंधित मुद्दे