java gwt richtextarea更改font-family

时间:2012-12-21 10:10:17

标签: java gwt fonts

java gwt的对象richtextarea默认情况下font-family'times new roman'是否可以将系列更改为'Arial'?

3 个答案:

答案 0 :(得分:5)

您有几种选择。您可以创建一个CSS类并将其设置在RichTextArea内部文档的body元素上,也可以直接在其上设置style属性。如果您希望此更改在整个应用程序中保持一致,我建议您创建一个新类并向其添加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;");
            });
        }
    }
}

答案 1 :(得分:2)

最好使用提供的功能。 如果你想在创建时更改它,你将需要如答案1中所述的initializeHandler:

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:您需要在向textarea添加任何内容之前执行此操作,否则它只会应用于新输入。

答案 2 :(得分: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文件

中的样式