样式文本setText性能不佳

时间:2013-09-12 10:53:11

标签: java swt styledtext

我对StyledText没什么问题。当我使用setText()方法和文本很长时,我必须等待几秒钟来渲染该文本。有什么方法可以用来加速显示这个文本吗?

1 个答案:

答案 0 :(得分:0)

您可以实施的唯一优化是将setText() 放在Job中的Runnable中,以阻止用户界面。

除此之外,它是SWT的API限制。

其他建议:

  • 提交错误/功能请求
  • 搜索StyledText,但显然不存在
  • 重新考虑您的计划。你有备份计划吗?性能是否至关重要?


    修改

    @greg-449

    /**
     * 
     * @author ggrec
     *
     */
    public class Test
    {
        public static void main(final String[] args)
        {
            new Test();
        }
    
        private Test()
        {
            final Display display = new Display();
            final Shell shell = new Shell(display);
            shell.setLayout(new GridLayout(1, false));
    
            final Button button = new Button(shell, SWT.PUSH);
            button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
            button.setText("Press me");
    
            final StyledText text = new StyledText(shell, SWT.NONE);
            text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    
            button.addSelectionListener(new SelectionAdapter() 
            {
                @Override public void widgetSelected(final SelectionEvent e)
                {
                    Display.getDefault().asyncExec(new Runnable() 
                    {
                        @Override public void run()
                        {
                            text.setText("*put very long text here*");
                        }
                    });
                }
            });
    
            shell.setSize(1000, 1000);
            shell.open();
            while (!shell.isDisposed())
            {
                if ( !display.readAndDispatch() )
                    display.sleep();
            }
            display.dispose();
        }
    }