यह शायद वास्तव में एक मूर्खतापूर्ण प्रश्न है, लेकिन मुझे कहीं भी उत्तर नहीं मिला, क्या उपयोगकर्ता के लिए SWT तालिका में पंक्तियों को हाइलाइट करने में सक्षम होने का कोई तरीका है और या तो ctrl+c या राइट-क्लिक करें+c मानों को कॉपी करने के लिए?

मैं विशेष रूप से एक्सेल शीट में कॉपी करने में सक्षम होना चाहूंगा।

इस तरह मैं टेबल बनाता हूं,

Table aTable = new Table(parent, SWT.SINGLE | SWT.BORDER
                | SWT.FULL_SELECTION);
aTable.setHeaderVisible(true);
aTable.setLinesVisible(true);

aTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

मैंने जेटीबल का उपयोग करके इसके बारे में जानकारी देखी है लेकिन एसडब्ल्यूटी के साथ कुछ भी नहीं। यदि JTable ही मेरा एकमात्र विकल्प है, तो इनमें से किसी एक का उपयोग करने के क्या नुकसान/फायदे होंगे?

3
nbz 19 सितंबर 2011, 17:36

2 जवाब

सबसे बढ़िया उत्तर

आप इसे आसानी से कोड कर सकते हैं।

अपनी तालिका में एक मुख्य श्रोता जोड़ें और Ctrl+C कुंजियों को सुनें। जब Ctrl+C हिट होता है, तो तालिका से चयन प्राप्त करें, प्रत्येक तालिका आइटम से टेक्स्ट निकालें और एक टैब-पृथक-फ़ील्ड/न्यूलाइन-सेपरेटेड-पंक्तियां स्ट्रिंग बनाएं जिसमें आपका डेटा है। फिर बस इसे क्लिपबोर्ड में डालें (देखें org.eclipse.swt.dnd.Clipboard#setContents, टेक्स्टट्रांसफर डेटा प्रकार का उपयोग करें)।

बस इतना ही - आपका परिणाम एक्सेल में पेस्ट करने योग्य होगा।

5
Favonius 30 सितंबर 2011, 23:36
लेकिन माउस संदर्भ मेनू के मामले में क्या? (जब आप राइट-क्लिक करते हैं)
 – 
nbz
22 सितंबर 2011, 15:19
2
ठीक है, आप ठीक वही काम करते हैं, केवल अंतर यह है कि आप अपनी तालिका में एक संदर्भ मेनू भी जोड़ते हैं, कॉपी के लिए मेनू आइटम जोड़ते हैं, और उस मेनू आइटम के चयन पर, आप वही करते हैं जो आपने पिछले श्रोता में किया था। ..
 – 
Mostafa Zeinali
14 जिंदा 2014, 10:19

स्वीकृत उत्तर अच्छा है, लेकिन चूंकि डेवलपर्स टेक्स्ट पर कोड स्निपेट पसंद करते हैं, इसलिए मैं इस प्रश्न का उत्तर इस तरह से दूंगा:

aTable.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        if (e.stateMask == SWT.CTRL && (e.keyCode == 'c' || e.keyCode == 'C')) {
            Clipboard clipboard = new Clipboard(Display.getDefault());
            clipboard.setContents(new Object[] { getTextFromSelectedRows() }, new Transfer[] { TextTransfer.getInstance() });
            clipboard.dispose();
        }
    }
});

फिर बस एक getTextFromSelectedRows()-विधि लागू करें - तालिका चयन के आधार पर - String लौटाता है जिसे क्लिपबोर्ड में जोड़ा जाना चाहिए।

1
MaS 18 सितंबर 2019, 11:45