[英]How to call a class in the done() method of a class which extends Swingworker?
我写了一个打开 cd/dvd(名为 Cdopener)的类,我有另一个类(名为 Burn),它扩展了 Swingworker,它在它的 done() 方法中做了一些事情,我想创建一个 Cdopener 类的对象它在 Burn 类运行时打开 cd。
这是我的 Cdopener 类:
import java.awt.Desktop;
import java.io.File;
import java.io.PrintWriter;
public class Cdopener {
public Cdopener() {
try {
//********Start VBScript code to open cd tray************
String a = "Set oWMP = CreateObject(\"WMPlayer.OCX\")" + "\n"
+ "Set colCDROMs = oWMP.cdromCollection" + "\n"
+ "For d = 0 to colCDROMs.Count - 1" + "\n"
+ "colCDROMs.Item(d).Eject" + "\n"
+ "Next" + "\n"
+ "set owmp = nothing" + "\n"
+ "set colCDROMs = nothing" + "\n"
+ "wscript.Quit(0)";
//********End VBScript code to open cd tray************
//Create a vbscript file called OpenCdTray.vbs
File myCdTrayOpener = new File("OpenCdTray.vbs");
//Create a PrintWriter object that will use to write into created file
PrintWriter pw = new PrintWriter(myCdTrayOpener);
//Write all string in (a) into created file
System.out.println(a);
pw.print(a);
//Flush all resource in PrintWriter to make sure
//there are no data left in this stream.
pw.flush();
//Close PrintWriter and releases any
//system resources associated with it
pw.close();
//Create a Desktop object to open created vbs file(OpenCdTray.vbs).
//It will open using default application that will use
//to handle this file in targeted computer.
//True application to run this file is wscript.exe
Desktop.getDesktop().open(myCdTrayOpener);
//Delete created vbs file before terminate application
myCdTrayOpener.deleteOnExit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
这是 Burn 类的 done() 方法:
protected void done() {
taskProgressBar.setIndeterminate(false);
if (this.error.length() == 0) {
taskProgressBar.setValue(100);
taskProgressBar.setString("Done");
}
// this.resultLbl.getText() +"\n"+getUserName();
addLog(resultLbl.getText());
// super.done();
}
我想调用 Cdopener 以便它打开 cd,为此我只是将这部分添加到我的代码中,以便在 Burn 类的 done() 部分创建一个 Cdopener 对象:
Cdopener cdopener = new Cdopener();
但似乎有些事情应该改变,因为它不会以这种方式打开 CD! 我应该如何在我的 done 方法中调用 Cdopener 类?
尝试这个
Desktop.getDesktop().open(new File(myCdTrayOpener.getAbsolutePath())); 用于打开您的 vbs 文件以确保它指向正确的文件目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.