代码之家  ›  专栏  ›  技术社区  ›  Tomas Andrle

只更改swt中的字体大小

  •  24
  • Tomas Andrle  · 技术社区  · 15 年前

    我需要在其中一个标签上使用更大的字体。

    label.setFont( new Font(display,"Arial", 14, SWT.BOLD ) );
    

    但很明显,宋体并不总是默认字体。我只想改变大小,其他的都保持默认值。

    我能做点什么吗

    label.setFontSize( 14 );
    

    为了避免设置其他参数?或者我能至少找出真正用作默认的字体的名称吗?

    2 回复  |  直到 11 年前
        1
  •  36
  •   Mark K    15 年前

    我相信你可以

    FontData[] fD = label.getFont().getFontData();
    fD[0].setHeight(16);
    label.setFont( new Font(display,fD[0]));
    

    只要返回的字体不超过一个,就可以了。

        2
  •  32
  •   hudsonb    11 年前

    你可以做到以下几点:

    FontData[] fontData = label.getFont().getFontData();
    for(int i = 0; i < fontData.length; ++i)
        fontData[i].setHeight(14);
    
    final Font newFont = new Font(display, fontData);
    label.setFont(newFont);
    
    // Since you created the font, you must dispose it
    label.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            newFont.dispose();
        }
    });