實際上,我已經從一個框架(假設)A ..在擺動工人類中在do-in-background方法中調用swing工作者我有某些db查詢,我也打電話給框架B .. done()方法,但我想處置框架..我怎麼做..?我不能在框架A類中寫入dispose(),因爲這會導致在新框架(框架B)可見之前丟棄框架...請幫助!處理從swingWorker框架
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](http://docs.oracle.com/javase/tutorial/uiswing/佈局/ card.html)會更合適。還要注意,通過在'main()'和'doInBackground()'中修改EDT之外的擺動組件,你正在打破擺動線程規則。 – kiheru
是不是可以處置frameA ..因爲它需要在我的應用程序..我不能使用標籤式窗口 – user2984132