xinjiandialog.java
来自「一款JAVA开发的类迅雷的多线程下载系统,希望对大家有帮助」· Java 代码 · 共 291 行
JAVA
291 行
package downfile;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.table.TableColumn;
public class XinJianDialog extends JDialog implements ActionListener,KeyListener{
JLabel urllb = new JLabel("下载地址:");
JLabel menulb = new JLabel("存储目录:");
JLabel filenamelb = new JLabel("文件名:");
JTextField urljtf = new JTextField();
JTextField filenamejtf = new JTextField();
JTextField lujinjtf = new JTextField();
JComboBox list = new JComboBox();
JScrollPane scrollpane = new JScrollPane();
JLabel adlb = new JLabel(MainFrame.main.getImageIcon(5));
JButton okjbn = new JButton("确定");
JButton canceljbn = new JButton("取消");
JButton liulanjbn = new JButton("浏览");
DownloadsTableModel m_tablemodel;
String filename = null;
String Path = "";
TreeModel treemodel;
JFileChooser chooser;
XinJianDialog(JFrame parent,String title,DownloadsTableModel tablemodel){
super(parent,title,true);
JPanel panel = new JPanel();
setSize(400,250);
panel.setLayout(null);
list.addItem("已下载");
for(int i=0;i<MainFrame.leadNodeList.size();i++){
TreeModel treemodel = (TreeModel)MainFrame.leadNodeList.get(i);
list.addItem(treemodel.name);
}
list.addItem("新建类别");
urllb.setBounds(new Rectangle(10,100,80,24));
panel.add(urllb);
urljtf.setBounds(new Rectangle(90,100,250,24));
menulb.setBounds(new Rectangle(10,130,70,24));
panel.add(menulb);
list.setBounds(new Rectangle(90,130,90,24));
panel.add(list);
adlb.setBounds(new Rectangle(10,10,380,80));
panel.add(adlb);
lujinjtf.setBounds(new Rectangle(190,130,100,24));
lujinjtf.setEditable(false);
panel.add(lujinjtf);
panel.add(urljtf);
liulanjbn.setBounds(new Rectangle(310,130,60,24));
panel.add(liulanjbn);
filenamelb.setBounds(new Rectangle(10,160,80,24));
panel.add(filenamelb);
filenamejtf.setBounds(new Rectangle(90,160,250,24));
panel.add(filenamejtf);
okjbn.setBounds(new Rectangle(200,190,60,24));
panel.add(okjbn);
canceljbn.setBounds(new Rectangle(270,190,60,24));
panel.add(canceljbn);
setContentPane(panel);
okjbn.addActionListener(this);
canceljbn.addActionListener(this);
list.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String name = list.getItemAt(list.getSelectedIndex()).toString();
if(name.equals("新建类别")){
XinJianLeiBieDialog xinjianleibie = new XinJianLeiBieDialog(MainFrame.main,"新建类别",
MainFrame.treeModel,MainFrame.node2);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = xinjianleibie.getSize();
xinjianleibie.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
xinjianleibie.setResizable(false);
xinjianleibie.setVisible(true);
list.removeAllItems();
list.addItem("已下载");
for(int i=0;i<MainFrame.leadNodeList.size();i++){
TreeModel treemodel = (TreeModel)MainFrame.leadNodeList.get(i);
list.addItem(treemodel.name);
}
list.addItem("新建类别");
list.setSelectedIndex(MainFrame.leadNodeList.size());
}
name = list.getItemAt(list.getSelectedIndex()).toString();
treemodel = (TreeModel)
MainFrame.getTreeModel(name);
if(treemodel == null){
treemodel = MainFrame.node2;
}
Path = treemodel.lujing;
lujinjtf.setText(Path);
chooser = new JFileChooser(treemodel.lujing);
}
});
urljtf.addKeyListener(this);
filenamejtf.addKeyListener(this);
liulanjbn.addActionListener(this);
m_tablemodel = tablemodel;
if(treemodel == null){
treemodel = MainFrame.node2;
}
lujinjtf.setText(treemodel.lujing);
chooser = new JFileChooser(treemodel.lujing);
}
public String verifyHttpUrl(String url){
if(!url.toLowerCase().startsWith("http://"))
return null;
return url;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == liulanjbn){
int r = 0;
chooser.setDialogTitle("选择文件夹");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.showDialog(this,"选择");
if (r == JFileChooser.APPROVE_OPTION) {
if(chooser.getSelectedFile()!=null){
Path = chooser.getSelectedFile().getAbsolutePath();
lujinjtf.setText(Path);
treemodel.lujing = Path;
}else{
Path = treemodel.lujing;
}
}
}
if(e.getSource()==okjbn){
addTask();
}
if(e.getSource()==canceljbn){
dispose();
}
}
public void addTask(){
String verifiedHttpUrl = verifyHttpUrl(urljtf.getText());
if(verifiedHttpUrl != null){
if(isExist(verifiedHttpUrl)){
dispose();
JOptionPane.showMessageDialog(this,
"此地址已经存在!!");
}else{
String filename = filenamejtf.getText();
if(Path.equals("")){
Path = MainFrame.node2.lujing;
}
m_tablemodel.addDownload(new Download(verifiedHttpUrl,SetUpDialog.kuaishu,filename,Path));
String name = list.getItemAt(list.getSelectedIndex()).toString();
TreeModel treemodel = (TreeModel) MainFrame.getTreeModel(name);
m_tablemodel.setTreeModel(treemodel);
urljtf.setText("");
dispose();
}
}else if(urljtf.getText().toLowerCase().startsWith("ftp://")){
String filename = filenamejtf.getText();
if(Path.equals("")){
Path = MainFrame.node2.lujing;
}
m_tablemodel.addDownload(new Download(urljtf.getText(),SetUpDialog.kuaishu,filename,Path));
String name = list.getItemAt(list.getSelectedIndex()).toString();
TreeModel treemodel = (TreeModel) MainFrame.getTreeModel(name);
m_tablemodel.setTreeModel(treemodel);
urljtf.setText("");
dispose();
}else{
JOptionPane.showMessageDialog(this,
"此URL地址无效,请重新输入!!","Error",JOptionPane.ERROR_MESSAGE);
}
}
public boolean isExist(String url){
for(int i=0;i<MainFrame.node2.downloadList.size();i++){
Download download = (Download)MainFrame.node2.downloadList.get(i);
if(url.equals(download.url)){
DownloadsTableModel tablemodel = new DownloadsTableModel(MainFrame.node2);
MainFrame.table.setModel(tablemodel);
MainFrame.selectionNode = MainFrame.node2;
MainFrame.tree.setSelectionRow(2);
return true;
}
}
for(int i=0;i<MainFrame.leadNodeList.size();i++){
TreeModel treemodel = (TreeModel)MainFrame.leadNodeList.get(i);
for(int j=0;j<treemodel.downloadList.size();j++){
Download download = (Download) treemodel.downloadList.get(j);
System.out.println("taong");
if(url.equals(download.url)){
DownloadsTableModel
tablemodel1 = new DownloadsTableModel(treemodel);
MainFrame.table.setModel(tablemodel1);
TableColumn column=null;
for (int h=0;h<6;h++){
//利用JTable中的getColumnModel()方法取得TableColumnModel对象;再利用TableColumnModel界面所定义的getColumn()方法取
//TableColumn对象,利用此对象的setPreferredWidth()方法就可以控制字段的宽度.
column=MainFrame.table.getColumnModel().getColumn(h);
if (h==0)
column.setPreferredWidth(20);
else
if(h == 1)
column.setPreferredWidth(120);
else
if(h==2)
column.setPreferredWidth(60);
else
if(h == 3)
column.setPreferredWidth(160);
else
column.setPreferredWidth(140);
}
MainFrame.selectionNode = treemodel;
MainFrame.tree.setSelectionRow(i+3);
return true;
}
}
}
for(int i=0;i<MainFrame.node3.downloadList.size();i++){
Download download = (Download) MainFrame.node3.downloadList.get(i);
DownloadsTableModel
tablemodel = new DownloadsTableModel(MainFrame.node3);
if(url.equals(download.url)){
MainFrame.table.setModel(tablemodel);
TableColumn column=null;
for (int h=0;h<6;h++){
//利用JTable中的getColumnModel()方法取得TableColumnModel对象;再利用TableColumnModel界面所定义的getColumn()方法取
//TableColumn对象,利用此对象的setPreferredWidth()方法就可以控制字段的宽度.
column=MainFrame.table.getColumnModel().getColumn(h);
if (h==0)
column.setPreferredWidth(20);
else
if(h == 1)
column.setPreferredWidth(135);
else
if(h==2)
column.setPreferredWidth(60);
else
if(h == 3)
column.setPreferredWidth(60);
else
column.setPreferredWidth(150);
}
MainFrame.selectionNode = MainFrame.node3;
MainFrame.tree.setSelectionRow(MainFrame.leadNodeList.size()+3);
return true;
}
}
return false;
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if(e.getSource() == urljtf){
char c = e.getKeyChar();
if(c == KeyEvent.VK_ENTER){
addTask();
}else{
String fileName;
fileName = urljtf.getText();
filename = fileName.substring(fileName.lastIndexOf('/')+1);
if(filename.equals(""))
filenamejtf.setText("index.htm");
else
filenamejtf.setText(filename);
}
}
else if(e.getSource() == filenamejtf){
char c = e.getKeyChar();
if(c == KeyEvent.VK_ENTER){
addTask();
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?