2011-06-23 21 views
5

चयन करने के लिए, मैं चाहता हूँ जब कोई उपयोगकर्ता एक सेल पर क्लिक करता है, इस वाक्य स्क्रीन पर मुद्रित करने के लिए:जावा: कैसे एक JTable में केवल एक ही सेल और एक JTable में नहीं पूरी पंक्ति

I am cell in row X and column Y 

जहां एक्स और वाई क्लिक किए गए सेल की पंक्ति और कॉलम हैं। लेकिन क्या मैं हो रही है:

I am cell in row 1 and column 0 
I am cell in row 1 and column 1 
I am cell in row 1 and column 2 
.... 
I am cell in row 1 and column N (N = number of columns) 

अर्थात समूची पंक्ति का चयन किया जाता है: जब मैं उदाहरण के लिए पंक्ति 1 और स्तंभ 4 में सेल क्लिक करें मैं निम्नलिखित मिलता है।

public class CustomTableCellRenderer extends DefaultTableCellRenderer{ 

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
{ 

    Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

      if(isSelected) System.out.println("I am cell in row "+row+" and column "+column); 



    return cell; 

} 

}

किसी भी मदद के लिए धन्यवाद:

इस

कोड है।

+0

क्या आप चयनित जेटीबल पंक्ति – mKorbel

उत्तर

1

सेल सामग्री प्रस्तुत करने के लिए सेल रेन्डरर्स का उपयोग किया जाता है। यदि आप उस सेल को ढूंढना चाहते हैं जिसमें माउस क्लिक किया गया है, तो माउसलिस्टर का उपयोग करें और माउसक्लेटेड विधि में सेल ढूंढें।

14

आपको इसके लिए सेल रेंडरर का उपयोग नहीं करना चाहिए।

अपनी तालिका पर सेल चयन सक्षम करें (setCellSelectionEnabled(true) का उपयोग करके), फिर तालिका का चयन मॉडल प्राप्त करें (getSelectionModel() का उपयोग करके), और इस चयन मॉडल पर श्रोता जोड़ें। प्रत्येक बार एक ईवेंट ट्रिगर होता है, यह जानने के लिए कि कौन सा सेल चुना गया है, getSelectedRow() और getSelectedColumn() का उपयोग करें।

ध्यान दें कि यह आपको चयनित सेल देगा, जिसे माउस या कीबोर्ड का उपयोग करके संशोधित किया जा सकता है। यदि आप सिर्फ यह जानना चाहते हैं कि माउस कहां क्लिक किया गया है, तो केडीएम का जवाब देखें।

+2

हाइलाइट को निकालने का अर्थ हैं यदि आप केवल एक ही सेल को अनुमति देने के लिए चयन को प्रतिबंधित करना चाहते हैं, जैसा कि मैंने किया था, तो आप 'setSelectionMode (ListSelectionModel.SINGLE_SELECTION);' को भी कॉल करना चाहते हैं। 'SetCellSelectionEnabled (true)' के संयोजन के साथ यह वांछित प्रभाव को काफी अच्छी तरह से उत्पन्न करता है। – Jeff

0

अपने if(isSelected)if (isSelected && hasFocus) के लिए परिवर्तित करें। यह चयनित पंक्ति के बजाय केवल चयनित सेल के लिए प्रिंट करेगा।

mKorbel का जवाब भी काम करना चाहिए ...

0

myTable.setCellSelectionEnabled (सही);