5

java gwt的对象richtextarea默认字体系列'times new roman'是否有可能将系列更改为'Arial'?

4

3 回答 3

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;");
            });
        }
    }
}
于 2012-12-21T10:46:08.970 回答
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:您需要在向文本区域添加任何内容之前执行此操作,否则它将仅应用于新输入。

于 2013-04-04T12:35:44.370 回答
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文件中的样式

于 2013-12-24T09:39:43.400 回答