簡體   English   中英

Eclipse-在工具欄中實現並增加swt進度欄

[英]Eclipse - Implementing and incrementing an swt progress bar in toolbar

我正在研究一個用於從目錄樹解析數據的應用程序,同時在底部的工具欄中顯示一個進度監視器。 我正在使用java Files.walk()遍歷結構,並嘗試使用IEventBroker,向工具欄部分發送消息以增加進度條,但是他似乎對我來說不太好。 有誰知道更好的方法嗎?

這是搜索開始並廣播事件的代碼。

Path file = Paths.get(directoryPath);

    if (!file.toFile().exists())
    {
        return null;
    }

    _broker.send(Constants.INITIALISE_PROGRESS_BAR, file.toFile().list().length);

    try (final Stream<Path> pathStream = Files.walk(file))
    {
        pathStream.forEach(path ->
        {

            _broker.send(Constants.INCREMENT_PROGRESS_BAR, "inc");

            ........

        });

    }

在我的工具欄部分中,我有以下方法可以初始化進度的最大大小並在收到事件時增加進度。

@Inject
@Optional
private void initialiseProgressBar(@UIEventTopic(Constants.INITIALISE_PROGRESS_BAR) Integer max)
{
    _progressBar.setMinimum(0);
    _progressBar.setMaximum(max);

}

@Inject
@Optional
private void incrementProgressBar(@UIEventTopic(Constants.INCREMENT_PROGRESS_BAR) String path)
{
    incrementProgressBar();
}

private void incrementProgressBar()
{
    _progressBar.setSelection(_progressBar.getSelection() + 1);
}

由於我不知道文件結構的大小,因此最好不要增加,而要進行一些持續的改進。

一種方法(除了建議的@ greg-449之外)是更改觸發此類init / refresh事件的方式

@Inject
private UISynchronize       sync;
...
sync.asyncExec(new Runnable() {
  @Override
  public void run() {
    _broker.send(Constants.INCREMENT_PROGRESS_BAR, "inc");            
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM