2014-11-03 3 views
0

У меня есть метка, где я изначально размещаю статический текст. В ходе моего приложения я буду переписывать эту метку, используя метод setText на ней, и размер текст может vary.How повторно размер размер этикетки вместо размещения постоянного размера в началеизменить размер lablel на основе размера текста в SWT

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? 

ответ

1

Вы можете позвонить Control#pack() на родителя Label:

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(); 
} 
0

Я нашел решение для answert. Нам просто нужно называть макет o f родительский виджете. Он делает трюк.

Composite.layout(true); 
Смежные вопросы