我正在使用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