2012-12-21 19 views

उत्तर

5

आपके पास कई विकल्प हैं। आप एक सीएसएस क्लास बना सकते हैं और इसे RichTextArea के अंदर दस्तावेज़ के बॉडी एलिमेंट पर सेट कर सकते हैं, या आप सीधे स्टाइल एट्रिब्यूट सेट कर सकते हैं। यदि आप चाहते हैं कि यह परिवर्तन आपके ऐप में सुसंगत रहे, तो मैं एक नई कक्षा बनाने और इसके लिए एक प्रारंभिक हैंडलर जोड़ने की सलाह देता हूं।

public class MyRichTextArea extends RichTextArea { 

    public MyRichTextArea() { 

     addInitializeHandler(new InitializeHandler() { 

      @Override 
      public void onInitialize(InitializeEvent ie) { 

       Document document = IFrameElement.as(getElement()).getContentDocument(); 
       BodyElement body = document.getBody(); 
       body.setAttribute("style", "font-family: Arial Unicode MS,Arial,sans-serif;"); 
      }); 
     } 
    } 
} 
+0

खेद है, लेकिन वह काम नहीं करता, मैं भी साथ सेट करने की कोशिश की आसान है : richTextArea.setStyleName ("फ़ॉन्ट-फ़ैमिली: एरियल ब्लैक"); – wasp256

+1

यह मेरे ऐप में पूरी तरह से ठीक काम करता है। दूसरी तरफ, सेट स्टाइलनाम, स्पष्ट रूप से काम नहीं करेगा क्योंकि यह RichTextArea पर शैली सेट करता है, न कि उस दस्तावेज़ पर। –

2

प्रदान की गई कार्यक्षमता का उपयोग करना बेहतर है। आप निर्माण के समय में इसे बदलना चाहते हैं, तो आप initializeHandler के रूप में इस सवाल का जवाब 1 में वर्णित की आवश्यकता होगी:

RichTextArea rta = new RichTextArea(); 
rta.addInitializeHandler(new InitializeHandler() { 
    public void onInitialize(InitializeEvent event) { 
      rta.getFormatter().setFontName("\"Trebuchet MS\",Trebuchet,Arial"); 
      rta.getFormatter().setFontSize(FontSize.SMALL); 
      rta.getFormatter().setForeColor("#FF0000"); 
     } 
    }); 

पुनश्च: आप आप पाठ क्षेत्र के लिए किसी भी सामग्री जोड़ सकते हैं या यह केवल हो जाएगा से पहले ऐसा करने की जरूरत है नए इनपुट पर लागू

+0

चूंकि उत्तर आदेश मतदान के साथ बदल सकता है, इसलिए उपयोगकर्ता द्वारा पोस्ट किए गए किसी अन्य उत्तर का संदर्भ देने के लिए यह अधिक उपयोगी है, इसकी संख्या के बजाए इसे पोस्ट किया गया है। – ASGM

+0

यह गलत जवाब है - यह केवल चयनित पाठ पर एक नई शैली निर्धारित करेगा, प्रश्न में निर्दिष्ट सभी RichTextArea की सामग्री पर नहीं। –

0

मैंने पाया और अधिक सामान्य समाधान:

addInitializeHandler(new InitializeHandler() { 
     public void onInitialize(InitializeEvent ie) { 
      Document document = IFrameElement.as(getElement()).getContentDocument(); 
      BodyElement body = document.getBody(); 
      HeadElement head = HeadElement.as(Element.as(body.getPreviousSibling())); 
      LinkElement styleLink = document.createLinkElement(); 
      styleLink.setType("text/css"); 
      styleLink.setRel("stylesheet"); 
      styleLink.setHref("richtextarea.css"); 
      head.appendChild(styleLink); 
     } 
    }); 

प्रारंभ हैंडलर जोड़ने के बाद, यह richtextarea.css फ़ाइल में शैलियों को बदलने के लिए