我只想在单击菜单栏中的“帮助”时设置一个 CHM 文件实例,并在再次单击时阻止它打开两次 - 因此我该如何编码?
我尝试将它与 process.isAlive() 一起使用,但在我关闭它之后我希望将计数器设置为零,这只会在计数器为 0 时打开另一个 CHM 文件。
helpMenu.addMouseListener(new MouseAdapter() {
// do this after clicked
openCHM();
});
所以 MouseEvent 被触发一次。
openCHM() {
Process p;
if(cnt == 0) {
p = Runtime.getRuntime().exec("hh.exe Help.chm");
cnt++;
if(!p.isAlive()) {
cnt = 0;
}
}
我预计计数器为 0,但后来得出的结论是 MouseEvent 已经触发一次并且代码已经执行,因此它永远不会进入第二个 if 语句并将我的计数器设置为 0。
编辑
如何一次打开 CHM 文件没有正确答案,但有一个解决方法可以实现,我们只需要查看文件是否可重命名。
protected void openCHM() {
try {
File file = new File("YOURNAME.chm");
boolean renamable = file.renameTo(file); // can't rename if file is already open, returns true if renaming is possible
if(renamable) {
Runtime.getRuntime().exec("hh.exe YOURNAME.chm");
} else if(!file.exists() ){
// message: file doesn't exist (in path)
} else {
// file is already open
}
} catch () {
}
}
元芳怎么了
相关分类