[英]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.