【问题标题】:java Label automatic fontsizejava标签自动字体大小
【发布时间】:2012-09-12 23:31:07
【问题描述】:

我有一个 SWT 标签,它显示从文件加载的不同单行文本。有没有办法自动调整字体大小,以便在出现长文本时字体大小变小并且标签仍然显示全文? 当Label没有这个属性时,是否可以使用font和fontsize来计算String的大小?

【问题讨论】:

    标签: java label font-size


    【解决方案1】:

    这是我的理解。您的标签宽度是固定的(假设为 200)。您读取的字符串需要 300 像素才能适合当前字体。您可以使用GC.textExtent(String)计算绘制所需的大小

    试试这个工作示例

      private static boolean setText(Label label, String txt, Font font)
      {
    
        int height = font.getFontData()[0].getHeight();
        GC gc = new GC(label);
        gc.setFont(font);
        Point size = gc.textExtent(txt);
        Rectangle bounds = label.getBounds();
        int diff = bounds.width-size.x;
        if(diff >= 0 || height <=2)
        {
          label.setFont(font);
          label.setText(txt);
          return true;
        }
        else
        {
    
          String name = font.getFontData()[0].getName();
          int style = font.getFontData()[0].getStyle();
          FontData data = new FontData(name, Math.max(1,height-1), style);
          Font newFont = new Font(Display.getCurrent(), data);
          if(!setText(label, txt, newFont))
          {
            newFont.dispose();
          }
        }
        gc.dispose();
        return false;
      }
    
      public static void main(String[] args) {
    
    
    
        Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setSize(600, 300);
    
        Label label = new Label(shell, SWT.NONE);
        label.setBounds(20, 20, 100, 50);
        setText(label, "hello stackoverflow!!!!!!", Display.getDefault().getSystemFont());
        shell.open();
    
    
        while (!shell.isDisposed()) {
          if (!display.readAndDispatch())
            display.sleep();
        }
        display.dispose();
    
    
      }
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2011-02-07
      • 2019-04-06
      • 2019-11-13
      • 1970-01-01
      • 2020-05-17
      • 2016-11-11
      • 2016-03-14
      • 1970-01-01
      相关资源
      最近更新 更多