繁体   English   中英

在Mac上无法使用选定控件上的Java SWT更改标签文本

[英]Java SWT Changing Label text on widget selected is not working on Mac

在我的java swt应用程序中,我有以下代码。 在按钮选择上,我需要两次更改标签的文本,一个是在运行线程之前,另一个是在线程完成之后。 它可以在Windows上运行,但在Mac上则不显示第一个文本。 为什么这在Mac上不起作用?

button.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent arg0) {
            statusLabel.setText("Running...");
            Thread background = new Thread() {
               @Override
               public void run() {
               // Long running task
               }
            };
            background.start();
            try {
                background.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            statusLabel.setText("Finished");
        }
    });

Thread.join的调用阻塞了UI线程,这将导致它停止响应。 在此之前,究竟需要多少更新,取决于每个平台上SWT实现的细节。

代码完成后,您应该从后台线程更新UI。

就像是:

button.addSelectionListener(new SelectionAdapter() {

   public void widgetSelected(SelectionEvent arg0) {

      statusLabel.setText("Running...");

      Thread background = new Thread() {
         @Override
         public void run() {
            // Long running task

            // Update UI from background thread
            Display.getDefault().asyncExec(() -> statusLabel.setText("Finished"));
         }
      };

      background.start();
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM