⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 download.java

📁 java多线程下载(程序源码) 只具备简单功能
💻 JAVA
字号:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.TextArea;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.CheckboxGroup;
public class DownLoadbb extends JFrame implements ActionListener{


   private JPanel contentPane;
   private JPanel progressPane;
   private JTextField textField1=new JTextField();
   private JTextField textField2=new JTextField();
   private JButton button=new JButton();
   private JButton open = new JButton("打开");
   private JButton stop = new JButton("停止");
   private JComboBox nThreadBox;
   private JCheckBox proxybutton = new JCheckBox();
   private JLabel label1=new JLabel();
   private JLabel label2=new JLabel();
   private JLabel label3=new JLabel("设置代理 : ");
   private JLabel label4=new JLabel("下载进度:");
   private JLabel label5=new JLabel("线程数:");
   private JTextArea textArea=new JTextArea();
      private JProgressBar jProgressBar = new JProgressBar();
      private int nTread = 5;
      static String host = "";
      static String port = "";
      DownLoadFile downFile;
   public DownLoadbb(){
      contentPane = (JPanel)this.getContentPane();
      contentPane.setLayout(null);
      
      this.setSize(new Dimension(380,400));
      this.setLocation(100,100);
      this.setTitle("多线程下载");
      textField1.setBounds(new Rectangle(150,200,200,20));
      textField1.setText("http://");
      textField2.setBounds(new Rectangle(150,240,120,20));
      textField2.setText("d:\\code.rar");
      label1.setBounds(new Rectangle(20,200,120,20));
      label1.setText("下载的目标文件为: ");
      label2.setBounds(new Rectangle(20,240,120,20));
      label2.setText("下载的文件另存为: ");
      open.setBounds(280, 240, 60, 20);
      open.addActionListener(this);
      button.setBounds(new Rectangle(20,280,60,20));
      button.setText("下载");
      button.addActionListener(this);
      stop.setBounds(100, 280, 60, 20);
      stop.addActionListener(this);
      label3.setBounds(165, 280, 80, 20);
      proxybutton.setBounds(225, 280, 20, 20);
      proxybutton.addActionListener(this);
      nThreadBox= new JComboBox(new String[]{"1","2","3","4","5","6","7","8","9","10"});
      label5.setBounds(250, 280, 60, 20);
      nThreadBox.setBounds(300, 280, 40, 20);
      nThreadBox.addActionListener(this);
      contentPane.add(textField1,null);
      contentPane.add(textField2,null);
      contentPane.add(label1,null);
      contentPane.add(label2,null);
      contentPane.add(open,null);
      contentPane.add(button,null);
      contentPane.add(stop,null);
      contentPane.add(label3,null);
      contentPane.add(proxybutton,null);
      contentPane.add(label5);
      contentPane.add(nThreadBox);
      //contentPane.add(textArea,null);
      textArea.setEnabled(false);
      textArea.setForeground(Color.black);
      JScrollPane scrollPane = new JScrollPane(textArea);
      scrollPane.setBounds(new Rectangle(20,20,330,170));
      contentPane.add(scrollPane,null);
      progressPane = new JPanel();
      progressPane.setBounds(20, 320,330,100);
      //jProgressBar.setsetSize(100, 100);
      //label4.setBounds(10, 320, 60, 20);
      //jProgressBar.setBounds(70, 320, 140, 20);
     // jProgressBar.setSize(100, 40);
      progressPane.add(label4,null);
      progressPane.add(jProgressBar,null);
      contentPane.add(progressPane);
     // progressPane.add(stop);
      this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     // this.pack();
   }
public static void main(String[] args) {
   // TODO Auto-generated method stub
   DownLoadbb download = new DownLoadbb();
   download.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
  
   // TODO Auto-generated method stub
   if(e.getSource() == open){
    JFileChooser fc=new JFileChooser();
    if(fc.showSaveDialog(this)==fc.APPROVE_OPTION){
    File f=fc.getSelectedFile() ;
    textField2.setText(f.getAbsolutePath()) ;
    }
   }
   if(e.getSource() == button){
    //progressPane.add(new JButton("nihao"));
    String URL = textField1.getText();
    String saveURL = textField2.getText();
    if(URL.compareTo("")==0 && saveURL.compareTo("")==0)
        {
            textArea.setText("请输入要下载的文件和保存文件完整地址");
        }
        else
        {
            try
            { 
             downFile=new DownLoadFile(URL,saveURL,textArea,nTread,jProgressBar);
             downFile.start();
                textArea.append("主线程启动、、、");
          
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
            }

        }
   }
   if(e.getSource() == nThreadBox){
    String item = nThreadBox.getSelectedItem().toString();
    System.out.println("item is :"+item);
    nTread = Integer.parseInt(item);
   }
   if(e.getSource() == stop){
    downFile.stop();
    textArea.append("\n 停止下载!!");
   }
   if(e.getSource() == proxybutton){
    if(proxybutton.isSelected()){
     //proxybutton.get
     textArea.append("\n 代理服务被选择");
     Point point=this.getLocation();
     int x = this.getHeight()/2+point.x;
     int y = this.getWidth()/2+point.y;
     ProxyPanel proxypanel=new ProxyPanel(x,y);
     /*System.getProperties().put("proxySet","true");
          System.getProperties().put("proxyHost",host);
          System.getProperties().put("proxyPort",port);*/
    }else{
     textArea.append("\n 取消代理服务");
     System.getProperties().clear();
    }
   }
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -