我正在使用invokeLater()加載位於JTabbedPane內的JPanel內的JEditPane內的HTML頁面。確定invokeLater中的進程何時完成
我所有的方法都可以正常加載html。我遇到麻煩的事情是更新標籤標題。
但是,方法setTitle()和setTabTitle()可以在PageLoader完成之前執行。因此標籤標題總是顯示前一個html頁面的標題。
有沒有一種方法可以讓我從執行,直到調用後已經完成了內螺紋後停止方法的setTitle()和setTabTitle():
這裏是我的代碼我在看的部分:
private void showPage(){
// Load cursors
Cursor cursor = viewer.getCursor();
Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
viewer.setCursor(waitCursor);
SwingUtilities.invokeLater(new PageLoader(viewer, url, cursor));
//Update tab title
setTitle();
tabPanel.setTabTitle(this);
//Update address bar
addressTextField.setText(url.toString());
}
感謝您的任何幫助,你可以給。
只是猜測沒有看到PageLoader:如果是這樣的長時間運行的任務,這是錯的包裹這一切進入一個調用 - 而是啓動一個線程來完成後臺工作,並在該線程中調用invokelater將結果傳遞給EDT。這是更新相關UI屬性的適當位置,如f.i.框架/標籤標題 – kleopatra 2013-04-04 22:16:13