用户操作
[即时聊天] [发私信] [加为好友]
穆春雨ID:shrekmu
51028次访问,排名2197,好友1人,关注者7人。
企者不立;跨者不行;自见者不明;自是者不彰;自伐者无功;自矜者不长。
shrekmu的文章
原创 90 篇
翻译 6 篇
转载 17 篇
评论 17 篇
最近评论
倶楽部運営者:不倫人妻ハメ撮り
診断先生:エロセフレエッチ
マダム管理人:不倫童貞童貞
サークル係員:セフレオナニー出会い
supersue:纠正一点小错误
在Jboss的lib中放置oracle驱动时,如果是JDK1.3或者1.2的话,可以放class12.jar,如果是JDK1.4或以上版本,则需要把ojdbc14.jar放进去
文章分类
收藏
    相册
    JUnit
    Nice
    儿子
    儿子2
    E680i
    MOTODEV
    摩托罗拉E680/E680i - 手机玩家俱乐部 - 捉鱼
    IBM
    LX1
    色影无忌 > LX1
    技术
    IBM-developerWorks
    历史
    当年明月《明朝的那些事儿-历史应该可以写得好看》
    文学
    校友录
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky

    原创 SWT窗体字体的设置收藏

    新一篇: Windows中Host名的配置 | 旧一篇: 可变Link颜色的Link控件的实现

    一、问题
        window默认的字体大小是9,RedHat Linux默认的字体大小是10。所以在Windowxia显示正常的窗体在Linuxxia会发现Lable太小。所以想设定以下字体的大小,最后发现只有当字体大小为7时才可以显示。
        Linux环境下设置了控件的字体以后就会改变控件的背景,但是控件背景的信息并没有丢失,所以需要再调一下设置背景的方法.

    二、代码

        /**
         * <b>機能概要:</b> 设置指定控件以及其子控件字体的大小。<br>
         * <br>
         * <b>処理フロー:</b> <br>
         * <ul>
         * <li>设定字体
         * <li>设定子控件的字体
         * </ul>
         *
         * @param control 需要设定字体的控件
         * <p>
         */
        public void applyDialogFont(Control control) {
            // 如果控件的字体为系统的默认字体就设定控件的字体,当某些控件设定过字体后就跳过
            if (control.getFont().equals(Display.getCurrent().getSystemFont())) {
                control.setFont(getDefaultFont());
                // Linux环境下,当设置过字体后会导致之前设定的背景色无效,需要重新设置
                control.setBackground(control.getBackground());
            }
            // 设定子控件的字体
            if (control instanceof Composite) {
                Control[] children = ((Composite) control).getChildren();
                for (Control child : children) {
                    applyDialogFont(child);
                }
            }
        }

        /**
         * <b>機能概要:</b> 取得本系统的默认字体。<br>
         * 需要依赖属性defaultFontHeight,可以通过Spring等IOC框架配置。<br>
         * <b>処理フロー:</b> <br>
         * <ul>
         * <li>取得本系统的默认字体
         * </ul>
         *
         * @param control 需要设定字体的控件
         * <p>
         */
        public Font getDefaultFont() {
            if (defaultFont == null) {
                // 取得系统的默认字体
                Font defFont = Display.getCurrent().getSystemFont();
                FontData[] data = defFont.getFontData();
                FontData titleData = null;
                if (data.length > 0) {
                    titleData = new FontData(data[0].getName(), defaultFontHeight, data[0].getStyle());
                } else {
                    titleData = new FontData("", defaultFontHeight, SWT.NONE);
                }
                // 做成默认字体
                defaultFont = new Font(DCContext.getDisplay(), titleData);
            }
            return defaultFont;
        }


    三、使用方式

        public static void main(String[] args) {
            Display display = new Display ();
            Shell shell = new Shell (display);
            shell.setLayout(new FillLayout());
           
            StyledText styleText = new StyledText(shell, SWT.MULTI | SWT.READ_ONLY | SWT.CENTER);
            styleText.setText("This is a Styled Text.\n You can set up different style.\n");
            StyleRange styleRange1 = new StyleRange();
            styleRange1.start = 5;
            styleRange1.length = 2;
            styleRange1.underline = true;
           
            styleText.setStyleRange(styleRange1);
           
            // 设定字体,所有控件窗体完以后调用才有效
            StyleUtils.applyDialogFont(parent);
            parent.pack();
           
            shell.setSize (500, 150);
            shell.open ();
            while (!shell.isDisposed ()) {
                if (!display.readAndDispatch ()) display.sleep ();
            }
            display.dispose ();
        } 

    发表于 @ 2007年10月24日 18:01:00|评论(loading...)|编辑

    新一篇: Windows中Host名的配置 | 旧一篇: 可变Link颜色的Link控件的实现

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 穆春雨