之前在下载东西的时候,因为浏览器的下载,我想这个下载完后再开迅雷,然后就突发一个念头,有定时执行任务的这种东西吧,确实,win7有个任务计划,其实学了java,感觉可以用线程的东西写个这样的出来,所以,便动手写了。
swing,和awt写的窗口用了别人的,自己的弱项。最后有下载地址,有源码,输入时间,选择文件,可以选择快捷方式,自己想添加什么文件类型去源代码添加。
程序拿到两个JTextField的值,另外一个类的构造方法带这两个参数,拿到参数,线程睡眠,接下来执行选中文件。
当路径有空格的时候,start命令运行是有问题的,所以如下:
Runtime.getRuntime().exec("cmd /c start "+"\""+"\" \""+ path+"\"");
源码:
package TimerTask;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ChooserFile extends JFrame implements ActionListener {
JTextField labfilepath;
JTextField time;
JPanel panel;
JButton btn;
JButton btn2;
public ChooserFile() {
setBounds(500, 300, 300, 300);
labfilepath = new JTextField(20);
time = new JTextField(20);
btn = new JButton("选择文件");
btn2 = new JButton("确定");
btn.addActionListener(this);
panel = new JPanel();
panel.add(new Label("运行间隔时间(单位:秒)"));
panel.add(time);
panel.add(new Label("请选择程序"));
panel.add(labfilepath);
panel.add(btn);
panel.add(btn2);
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String str = "";
str += time.getText();
System.out.println(str);
String str2 = "";
str2 += labfilepath.getText();
System.out.println(str2);
TimerClose tc = new TimerClose(Long.parseLong(str) * 1000, str2);
System.out.println(tc.getLongtime());
tc.run();
// tc.run();
}
});
getContentPane().add(panel);
setTitle("定时执行器");
setSize(400, 200);
setVisible(true);
}
public static void main(String args[]) {
new ChooserFile();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
open();
}
public void open() {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
FileNameExtensionFilter filter = new FileNameExtensionFilter("EXE",
"exe", "txt", "lnk");
chooser.setFileFilter(filter);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle("Seletct exe File");
int result = chooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
String filename = file.getName();
File file1 = chooser.getCurrentDirectory();
String filepath = file1.getAbsolutePath();
labfilepath.setText(filepath + "\\" + filename);// 将文件路径设到JTextField
// System.out.println(filepath+"\\"+filename);
}
}
}
package TimerTask;
import java.awt.TextField;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Calendar;
import java.util.Date;
public class TimerClose implements Runnable {
private static long longtime ;
public static long getLongtime() {
return longtime;
}
public static String getPath() {
return path;
}
//private static String command = "cmd /E:ON /c call ";
private static String path = "";
private static int sec = 0;
//构造方法 传入参数 将图形界面拿到的时间值赋给longtime
public TimerClose(Long time,String path){
this.longtime = time;
this.path = path;
}
/* START D:\Program Files\Thunder Network\Thunder\Program\Thunder.exe */
private static void process() {
try {
path = path.replaceAll("\\\\","\\\\\\\\");
Process process = Runtime.getRuntime().exec("cmd /c start "+"\""+"\" \""+ path+"\"");
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void run() {
try {
Thread.sleep(longtime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
process();
}
}
之前那个导出的时候忘记放源码了:
下载地址:http://download.csdn.net/detail/iaiti/5621137