2012-10-01 28 views
6

यह शायद एक टीम प्रोजेक्ट के लिए थोड़ा चुनौतीपूर्ण है, एक व्यक्ति के कार्यान्वयन के लिए अकेले रहने दें, लेकिन मैं JEditorPane का उपयोग करके सिंटैक्स हाइलाइटिंग के साथ एक सरल लेकिन सुरुचिपूर्ण टेक्स्ट एडिटर को एक साथ रखने की कोशिश कर रहा था। मैं this पर ठोकर खा गया था जो बंद कर दिया गया था और मेरे लिए सभी लेक्सर फ़ाइलों और .lex सामान के साथ समझने के लिए वास्तव में कठिन था। मैंने कुछ ब्लॉगों में भी पाया कि इस परियोजना को बाद में किसी अन्य टीम ने लिया लेकिन फिर भी बंद कर दिया। कोड कोड फोल्डिंग और सामान होने की तरह मुझे इसकी कल्पना करने की ज़रूरत नहीं है (भले ही मुझे यह पता लगाने के लिए प्रेरित किया गया हो), लेकिन मुझे कम से कम मूल वाक्यविन्यास पर प्रकाश डालने की आवश्यकता है और बहुत अधिक लाइन उदाहरण के लिए नोटपैड ++ की तरह दूर बाईं ओर संख्या। ध्यान रखें कि मुझे जावा स्रोत-कोड को कम से कम अभी तक हाइलाइट करने के लिए केवल इसकी आवश्यकता है।सिंटैक्स हाइलाइटिंग और लाइन नंबर के साथ टेक्स्ट एडिटर?

जो मैं खोज रहा हूं वह एक ट्यूटोरियल है, एक अच्छी तरह से प्रलेखित उदाहरण और नमूना कोड, एक पूर्व निर्मित पैकेज, नेटबीन के लिए भी एक उपकरण चाल कर सकता है, मुझे स्पष्ट रूप से स्क्रैच से लिखे गए स्रोत कोड की आवश्यकता नहीं है , मुझे केवल एक कार्यान्वयन की आवश्यकता है जिसका उपयोग किया जा सके। अग्रिम में धन्यवाद!

पी.एस. यह वाणिज्यिक या बहुत बड़ा नहीं होगा, पूछो मत कि मैं ऐसे पहल को फिर से शुरू करना चाहता हूं जब वहां बहुत से प्रोग्रामिंग संपादक हैं, मैं सीख रहा हूं और यह मेरे लिए एक अच्छा अभ्यास के रूप में आया है!

+0

इस लड़के ने बहुत कुछ करने में मदद की जब मुझे कुछ ऐसा करने की ज़रूरत थी: @StanislavL (http://stackoverflow.com/users/301607/stanislavl) –

+0

यदि मैं सभी के माध्यम से देख सकता हूं तो मैं उनके उत्तरों को एक संक्षिप्त जांच दूंगा उन्हें। क्या आप मुझे उसी विषय से जोड़ सकते हैं जिसकी उसने आपकी सहायता की? :) –

+0

वह एसओ से पहले था। मैंने अपनी प्रोफ़ाइल का लिंक पोस्ट किया ताकि आप सीधे उससे बात करने की कोशिश कर सकें। –

उत्तर

5

RSyntaxTextArea बीएसडी लाइसेंस प्राप्त है और आपकी आवश्यकताओं का समर्थन करता है, साथ ही कोड फोल्डिंग और भी बहुत कुछ। उपयोग करने के लिए बहुत आसान है।

+0

पढ़ना चाहिए, यह बहुत अच्छा विचार है, मैं इसे देख लूंगा! धन्यवाद! :) –

+0

सरल, सुरुचिपूर्ण, अद्भुत और बहुत सारी कार्यक्षमता जो मुझे वाकई पसंद है! आपने मुझे बहुत सारी खोज और परेशानी बचाई! धन्यवाद! : डी –

4

क्या आपने नेटबीन्स के आसपास यह tutorial देखा था? या आपने यह स्विंग component देखा है?

+0

कुछ अच्छे लिंक +1 करें –

+0

दूसरा लिंक का उदाहरण भी संकलित नहीं करता है? लाइन 27 पर त्रुटि: org.jdesktop.swingx.JXEditorPane के लिए कक्षा नहीं मिली !? –

+0

बीटीडब्ल्यू इनमें से कोई भी मुझे किसी भी तरह से प्रबुद्ध नहीं किया, उन्होंने मुझे और भी भ्रमित कर दिया! :/ –

1

वैसे मैंने एक समान परियोजना पर काम किया और यहां मैं जो आया था उसके साथ। जहां तक ​​लाइन संख्याएं जाती हैं, मैंने वास्तविक टेक्स्टपेन से जुड़े स्क्रोलपैन का उपयोग किया था।

public class LineNumberingTextArea extends JTextArea 
{ 
private JTextPane textArea; 


/** 
* This is the contructor that creates the LinNumbering TextArea. 
* 
* @param textArea The textArea that we will be modifying to add the 
* line numbers to it. 
*/ 
public LineNumberingTextArea(JTextPane textArea) 
{ 
    this.textArea = textArea; 
    setBackground(Color.BLACK); 
    textArea.setFont(new Font("Consolas", Font.BOLD, 14)); 
    setEditable(false); 
} 

/** 
* This method will update the line numbers. 
*/ 
public void updateLineNumbers() 
{ 
    String lineNumbersText = getLineNumbersText(); 
    setText(lineNumbersText); 
} 


/** 
* This method will set the line numbers to show up on the JTextPane. 
* 
* @return This method will return a String which will be added to the 
* the lineNumbering area in the JTextPane. 
*/ 
private String getLineNumbersText() 
{ 
    int counter = 0; 
    int caretPosition = textArea.getDocument().getLength(); 
    Element root = textArea.getDocument().getDefaultRootElement(); 
    StringBuilder lineNumbersTextBuilder = new StringBuilder(); 
    lineNumbersTextBuilder.append("1").append(System.lineSeparator()); 

    for (int elementIndex = 2; elementIndex < root.getElementIndex(caretPosition) +2; 
     elementIndex++) 
    { 
     lineNumbersTextBuilder.append(elementIndex).append(System.lineSeparator()); 
    } 
    return lineNumbersTextBuilder.toString(); 
} 
} 

वाक्य रचना हाइलाइटिंग एक आसान काम नहीं है, लेकिन क्या मैं कुछ पाठ फ़ाइलें है कि एक के लिए सभी कीवर्ड निहित आधार पर तार के लिए खोज करने के लिए सक्षम किया जा रहा था के साथ शुरू किया: Scrollpane उसके बाद निम्न कोड के साथ नंबर बदल रहा था कुछ भाषा मूल रूप से फ़ाइल के विस्तार के आधार पर फ़ंक्शन को सही फ़ाइल मिल जाएगी और उस फ़ाइल में शब्दों की तलाश होगी जो टेक्स्ट क्षेत्र में निहित थे।