2012-02-03 29 views
7

हम अपने आवेदन में जावाएफएक्स के TextArea नियंत्रण का उपयोग कर रहे हैं, और इसे Jazzy स्पेल चेक एपीआई के साथ एकीकृत करने की कोशिश कर रहे हैं - जैसे कि जब कोई उपयोगकर्ता गलत शब्द में प्रवेश करता है जो शब्दकोष में नहीं होता है, तो ऐसा शब्द होगा पर प्रकाश डाला।जावाएफएक्स में स्ट्रिंग्स हाइलाइटिंग टेक्स्टएरिया

क्या नियंत्रण में किसी शब्द को हाइलाइट करने का कोई तरीका है? मैंने JavaDocs में इसके लिए कोई विकल्प नहीं देखा है, इसलिए यदि कोई दृष्टिकोण सुझा सकता है?

यह अनुमान लगाया जा सकता है कि HTMLEditor घटक का उपयोग करें और <font face="red=>wrongWord</font> के साथ शब्दों को अलग-अलग रंग दें। हालांकि, यह वर्तनी जांच के साथ कई अलग-अलग समस्याओं को लाता है, जैसे एचटीएमएल टैग और शब्द गिनती।

उत्तर

8

जावाएफएक्स टेक्स्ट एरिया नियंत्रण (2.0.2 के रूप में) समृद्ध टेक्स्ट संपादन का समर्थन नहीं करता है जहां टेक्स्ट शैलियों (फोंट, आदि) मिश्रित होते हैं।

आप निम्न उदाहरण में, TextArea के selectRange जोड़ तोड़ द्वारा TextArea में पात्रों के सन्निहित तार को उजागर कर सकते हैं:

public class TextHighlight extends Application { 
    public static void main(String[] args) { Application.launch(args); } 
    @Override public void start(Stage stage) { 
    final TextArea text = new TextArea("Here is some textz to highlight"); 
    text.setStyle("-fx-highlight-fill: lightgray; -fx-highlight-text-fill: firebrick; -fx-font-size: 20px;"); 
    text.setEditable(false); 
    text.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() { 
     @Override public void handle(MouseEvent t) { t.consume(); } 
    }); 

    stage.setScene(new Scene(text)); 
    stage.show(); 

    Platform.runLater(new Runnable() { 
     @Override public void run() { text.selectRange(13, 18); } 
    }); 
    } 
} 

आप TextArea स्विच करने के लिए केवल पढ़ने के लिए करने के लिए एक आधार के रूप में उपरोक्त कोड इस्तेमाल कर सकते हैं मोड वर्तनी जांच हो रही है। जब तक वर्तनी जांच पूरी नहीं हो जाती तब तक प्रत्येक शब्द को खोजने और ठीक करने के लिए संकेत दें। एक अलग संवाद या पैनल में संकेत प्रदर्शन करें। जैज़ी डेमो इस तरह से काम करता है http://jazzy.sourceforge.net/demo.html, इसलिए इसे अपने स्विंग यूआई को जावाएफएक्स में परिवर्तित करना काफी आसान होना चाहिए। http://jewelsea.wordpress.com/2011/12/11/codemirror-based-code-editor-for-javafx/:


वैकल्पिक रूप से, आप कई जावास्क्रिप्ट/HTML आधारित जादू चेकर्स (जैसे http://www.javascriptspellcheck.com/) एक तकनीक है कि यहाँ क्या प्रदर्शित किया गया है के लिए इसी तरह का उपयोग कर के किसी भी रैप करने के लिए एक JavaFX WebView नियंत्रण इस्तेमाल कर सकते हैं।

13

RichTextFX आपको टेक्स्ट श्रेणियों में शैली जोड़ने की अनुमति देता है।

5

यह संभव है ...

मैं इस सवाल का पता की तरह हल हो गई है, लेकिन मैं इस मुद्दे को ठीक करने के लिए एक रास्ता मिल गया और मैं अन्य लोगों को जो भी इस पोस्ट पर ठोकर के लिए इसे पोस्ट करता हूँ सोचा । यह थोड़ा हैकी है, लेकिन अगर आपको टेक्स्टएरिया में टेक्स्ट हाइलाइट करने की आवश्यकता है और असंतोषजनक "असंभव" उत्तर स्वीकार नहीं करना है तो यह चुटकी में काम करता है।

  1. पुनः प्राप्त TextArea की पृष्ठभूमि का रंग और पाठ फ़ॉन्ट
  2. के अग्रभाग रंग अग्रभूमि और पृष्ठभूमि रंग
  3. प्लेस इच्छित पाठ के चारों और आयत
  4. सेट के बीच उच्चतम विपरीत बिन की गणना पृष्ठभूमि रंग
  5. उच्चतम विपरीत
  6. की बिन आयत के blendmode सेट करने के लिए आयत के रंग आयत अक्षम

आयताकार पृष्ठभूमि के साथ पूरी तरह से मिश्रण करेगा लेकिन पाठ का रंग बदल देगा। आयताकार को अक्षम करने का अर्थ यह है कि यह उपयोगकर्ता के लिए तपस्या से ज्यादा कुछ भी दिखाई देता है - जैसे आयताकार पर क्लिक करने जैसी कार्रवाइयों का कोई आश्चर्य नहीं होगा।

यदि रंगों की विविधता वांछित है तो आप इस विधि को थोड़ा सा ट्विक कर सकते हैं।

अगर लोग, रुचि उलझन में हैं मैं कार्यान्वयन विवरण पोस्ट कर सकते हैं, या यह काम कर पाने के मुश्किल हो चुका है।

+1

मैं करने के लिए वांछित शैली वर्ग बताए TextFlow

उपयोग कर सकते हैं

आप TextFlow में, बोल्ड लाल, हरे या Texts किसी भी प्रकार के लिए कुछ खास शैली वर्गों को परिभाषित करने और उन्हें व्यवस्था कर सकते हैं इस समाधान के बारे में और जानना चाहेंगे। खासकर # 3। आयत को कहां रखा जाए, आपको कैसे पता चलेगा; क्या होता है जब खिड़की/टेक्स्ट एरिया चलता है; आधे अस्पष्ट या छिपे हुए पाठ जैसे अपवादों से आप कैसे निपटते हैं; क्या होता है जब TextArea स्क्रॉल करता है? –

+0

वाह, दोस्त, यह हैकी है! प्रशंसा! ;-) –

+0

आप कैसे तय करते हैं कि यह आयताकार कहां रखा जाए? उदाहरण के लिए, कहें कि मैं अक्षर 7-13 को हाइलाइट करना चाहता हूं (और मुझे नहीं पता कि इसमें लाइन ब्रेक शामिल है या नहीं !!), मैं कैसे तय कर सकता हूं कि आयत के शीर्ष बाईं ओर कहां जाता है? –

5

JavaFX 8 के साथ आप जबकि प्रत्येक पाठ

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

  • कोई संबंधित समस्या नहीं^_^