有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个最初放置静态文本的标签。在我的应用程序中,我将使用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) 个答案

  1. # 1 楼答案

    您可以在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();
    }
    
  2. # 2 楼答案

    我找到了答案的答案。我们只需要调用小部件父级的布局。它成功了

      Composite.layout(true);