根据SWT中的文本大小重新调整标签大小

时间:2014-11-03 19:58:37

标签: java swt eclipse-rcp

我有一个标签,我最初放置一个静态文本。在我的应用程序中,我将使用setText方法覆盖此标签,文本的大小可能会有所不同。如何重新调整大小的大小标签而不是在开头的

中放置一个恒定的大小
Label fontDisplay;
fontDisplay = new Label(Composite, SWT.NONE);
GridData gridData = new GridData();
    gridData.widthHint = 12;
    fontDisplay.setLayoutData(gridData);
 ....

 fontDisplay(someText);//size of some text is greater than 12,how to re -size the label here?

2 个答案:

答案 0 :(得分:1)

您可以在Label

的父级上致电Control#pack()
private static final String TEXT = "abcdefghijklmnopqrstuvwxyz";
public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell();
    shell.setText("StackOverflow");
    shell.setLayout(new GridLayout(2, false));

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Randomize");

    final Label label = new Label(shell, SWT.NONE);
    label.setText("abc");

    button.addListener(SWT.Selection, new Listener()
    {
        private Random random = new Random();

        @Override
        public void handleEvent(Event arg0)
        {
            label.setText(TEXT.substring(0, random.nextInt(TEXT.length())));
            label.getParent().pack();
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

答案 1 :(得分:0)

我找到了answert的解决方案。我们只需要调用小部件的父级布局。它可以解决问题。

  Composite.layout(true);