2012-12-21 16 views

Odpowiedz

5

Masz kilka opcji. Możesz utworzyć klasę CSS i ustawić ją na elemencie body dokumentu wewnątrz RichTextArea lub możesz bezpośrednio ustawić atrybut stylu. Jeśli chcesz, aby ta zmiana była spójna w całej aplikacji, zalecamy utworzenie nowej klasy i dodanie do niej obiektu InitializeHandler.

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

przykro, ale to nie działa, próbowałem również ustawić go z : richTextArea.setStyleName ("rodzina czcionek: Arial Black"); – wasp256

+1

Działa to doskonale w mojej aplikacji. Z drugiej strony, setStyleName, oczywiście, nie zadziała, ponieważ ustawia styl samego RichTextArea, a nie dokumentu, który zawiera. –

2

Lepiej używać dostarczonej funkcjonalności. Jeśli chcesz zmienić go w momencie tworzenia, trzeba będzie się initializeHandler jak wspomniano w odpowiedzi 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"); 
     } 
    }); 

PS: trzeba to zrobić przed dodaniem jakichkolwiek treści do pola tekstowego, czy będzie to tylko zastosowane do nowego wejścia.

+0

Ponieważ kolejność odpowiedzi może się zmieniać w trakcie głosowania, bardziej przydatne jest odwoływanie się do innej odpowiedzi użytkownika, który ją opublikował, niż jej numeru. – ASGM

+0

To jest NIEPRAWIDŁOWA odpowiedź - ustawi nowy styl tylko na wybranym tekście, a nie na całej zawartości RichTextArea określonej w pytaniu. –

0

Znalazłem bardziej powszechne rozwiązanie:

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); 
     } 
    }); 

Po dodaniu obsługi inicjalizacji, łatwo zmieniać style w richtextarea.css pliku

Powiązane problemy