【发布时间】:2013-11-27 09:23:21
【问题描述】:
实际上我已经从框架(假设)A.. 在 do-in-Background 方法中的 swing 工作人员类中调用了 swing worker,我有某些数据库查询,我也在调用框架 B.. 在 done()方法但是我想处理框架 A.. 我该怎么做..?我不能在框架 A 类中编写 dispose(),因为这会导致在新框架(框架 B)可见之前处理框架......请帮助!
class frameA extends JFrame{
public frameA(){
//done some operations..
SwingWorker worker=new Worker();
worker.execute();
}
public static void main(string[] args){
new frameA();
}
}
在工人阶级中
class Worker extends SwingWorker<Void, String> {
public Worker() {
super();
}
//Executed on the Event Dispatch Thread after the doInBackground method is finished
@Override
protected void done() {
//want to dispose the frameA here..
}
@Override
protected Void doInBackground() throws Exception {
// some db queries
new frameB().setVisible(true);
// call to frameb
}
【问题讨论】:
-
这种情况看起来很可疑,使用单帧和CardLayout 会更合适。另请注意,您通过在
main()和doInBackground()中修改 EDT 之外的摆动组件来破坏摆动线程规则。 -
是否无法处理 frameA.. 因为它在我的应用程序中是必需的.. 我无法使用选项卡式窗口
标签: java swing jframe swingworker