📄 main.java
字号:
df.b2.setEnabled(false);
String str = df.t1.getText();
String[] s = str.split("/");
int i = s.length;
df.t3.setText(s[i - 1]);
} else {
df.b2.setEnabled(true);
String str = df.t1.getText();
String[] s = str.split("/");
int i = s.length;
df.t3.setText(s[i - 1]);
}
}
public void mouseEntered(MouseEvent e) {
}
// 单击鼠标的时候,如果文本框里为提示的文字,则清空文本框
public void mouseClicked(MouseEvent e) {
}
});
df.t2.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
// 当鼠标移出时,如果文本框为空,则让删除按钮不可用
public void mouseExited(MouseEvent e) {
if (df.t1.getText().equals("") || df.t2.getText().equals("")) {
df.b2.setEnabled(false);
} else {
df.b2.setEnabled(true);
}
}
public void mouseEntered(MouseEvent e) {
}
// 单击鼠标的时候,如果文本框里为提示的文字,则清空文本框
public void mouseClicked(MouseEvent e) {
}
});
/*
*
* @对各个组件进行装载及布局的设置
*
*/
addPanel.add(newButton);
addPanel.add(L3);
addPanel.add(clearButton);
addPanel.add(L4);
addPanel.add(delete);
p1.add(buttonsPanel, BorderLayout.CENTER);
p1.add(addPanel, BorderLayout.SOUTH);
p1.setBorder(border1);
this.setLayout(new BorderLayout());
this.add(downloadsPanel, BorderLayout.CENTER);
this.add(p1, BorderLayout.SOUTH);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(600, 300);
this.setLocation(300, 300);
/*
* @对断点续传功能的实现
*/
// 对指定路径进行搜索扩展名为“properties”的文件
File filepath = new File("e:\\");
String[] s = filepath.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
if (name.endsWith(".properties")) {
return true;
} else {
return false;
}
}
});
String tmp[] = new String[s.length];
String filename[] = new String[s.length];
for (int i = 0; i < s.length; i++) {
// 除去扩展名
tmp = s[i].split("\\.");
filename[i] = tmp[0];
}
// 判断是否存在“properties”文件
if (filename != null) {
for (int i = 0; i < filename.length; i++) {
// 如果文件存在则对各个属性进行读取
fileName = filename[i];
File f = new File("e:\\" + fileName + ".properties");
// 读取文件的大小
long fa = f.length();
if (fa > 0) {
// 读取网络地址
verifiedUrl = op.readValue(fileName + ".properties",
"verifiedUrl");
// 读取保存文件保存路径
saveURL = op.readValue(fileName + ".properties", "saveURL");
// 读取文件已下载总量
downloaded = Integer.valueOf(op.readValue(fileName
+ ".properties", "downloaded"));
// 读取文件大小
size = Integer.valueOf(op.readValue(fileName
+ ".properties", "fileLength"));
// 读取文件的下载状态
status = Integer.valueOf(op.readValue(fileName
+ ".properties", "status"));
// 读取下载文件时的线程数
nTread = Integer.valueOf(op.readValue(fileName
+ ".properties", "nthread"));
// 读取已下载文件所用的时间
second = Integer.valueOf(op.readValue(fileName
+ ".properties", "second")) - 1;
a = new int[nTread];
// 读取各个线程的下载量
for (int n = 0; n < nTread; n++) {
a[n] = Integer.valueOf(op.readValue(fileName
+ ".properties", "" + (n + 1)));
}
pathname.add(saveURL);
// 添加下载任务
actionAdd();
}
}
}
}
/*
* @方法体
*/
// 添加下载任务方法
private void actionAdd() {
// 对下载文件和保存文件完整地址进行检查
if (saveURL.compareTo("") == 0 && verifiedUrl.compareTo("") == 0) {
JOptionPane.showMessageDialog(this, "请输入要下载的文件和保存文件完整地址",
"远程(或本地)地址错误", JOptionPane.ERROR_MESSAGE);
}
else {
// 对网络地址进行检查
if (!verifyUrl(verifiedUrl)) {
JOptionPane.showMessageDialog(this,
"请输入正确的远程(和本地)地址(如:http://192.168.20.99;)",
"远程(或本地)地址错误", JOptionPane.ERROR_MESSAGE);
} else {
try {
tableModel.addDownload(new DownLoadFile(verifiedUrl,
saveURL, nTread, downloaded, size, status, a,
second));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
// 对网络地址进行判断
private boolean verifyUrl(String url) {
if (!url.toLowerCase().startsWith("http://"))
return false;
URL verifiedUrl = null;
try {
verifiedUrl = new URL(url);
} catch (Exception e) {
return false;
}
if (verifiedUrl.getFile().length() < 2)
return false;
return true;
}
private void tableSelectionChanged() {
if (selectedDownload != null)
selectedDownload.deleteObserver(Main.this);
if (!clearing) {
selectedDownload = tableModel.getDownload(table.getSelectedRow());
selectedDownload.addObserver(Main.this);
updateButtons();
}
}
// 对文件删除方法
private void actionDelete() {
String path = (String) pathname.get(table.getSelectedRow());
File f = new File(path);
f.delete();
updateButtons();
}
// 暂停方法
private void actionPause() {
selectedDownload.pause();
updateButtons();
}
// 断点后重新开始
private void actionResume() {
selectedDownload.resume();
updateButtons();
}
// 删除任务方法
private void actionClear() {
clearing = true;
tableModel.clearDownload(table.getSelectedRow());
clearing = false;
selectedDownload = null;
updateButtons();
}
// 设置按钮是否可用
private void updateButtons() {
if (selectedDownload != null) {
int status = selectedDownload.getStatus();
// 利用switch,和下载状态设置按钮是不否可用
switch (status) {
case DownLoadFile.DOWNLOADING:
pauseButton.setEnabled(true);
resumeButton.setEnabled(false);
delete.setEnabled(false);
clearButton.setEnabled(false);
break;
case DownLoadFile.PAUSED:
pauseButton.setEnabled(false);
resumeButton.setEnabled(true);
delete.setEnabled(true);
clearButton.setEnabled(true);
break;
case DownLoadFile.ERROR:
pauseButton.setEnabled(false);
resumeButton.setEnabled(true);
delete.setEnabled(true);
clearButton.setEnabled(true);
break;
default:
pauseButton.setEnabled(false);
resumeButton.setEnabled(false);
delete.setEnabled(true);
clearButton.setEnabled(true);
}
} else {
pauseButton.setEnabled(false);
resumeButton.setEnabled(false);
clearButton.setEnabled(false);
delete.setEnabled(false);
}
}
public void update(Observable o, Object arg) {
if (selectedDownload != null && selectedDownload.equals(o))
updateButtons();
}
// Main方法
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
/** 通过皮肤类,包装窗体组件——通过liquidlnf.jar */
UIManager
.setLookAndFeel(new com.birosoft.liquid.LiquidLookAndFeel());
} catch (Exception exception) {
exception.printStackTrace();
}
/** 通过java的swing包,美化边框 */
javax.swing.JFrame.setDefaultLookAndFeelDecorated(true);
Main manager = new Main();
manager.setVisible(true);
}
});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -