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

📄 downloadmanager.java

📁 < ProJavaProgrammingSecondEdition> 书中例程源码
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.URL;
import javax.swing.*;
import javax.swing.border.*;

public class DownloadManager extends JPanel {

  protected Downloader downloader;

  protected JButton startButton;
  protected JButton sleepButton;
  protected JButton suspendButton;
  protected JButton resumeButton;
  protected JButton stopButton;

  public static void main(String[] args) throws Exception {
    URL url = new URL(args[0]);
    FileOutputStream fos = new FileOutputStream(args[1]);
    JFrame f = new JFrame();
    DownloadManager dm = new DownloadManager(url, fos);
    f.getContentPane().add(dm);
    f.setSize(600, 400);
    f.setVisible(true);
  }

  public DownloadManager(URL source, OutputStream os)
      throws IOException {
    downloader = new Downloader(source, os);
    buildLayout();
    Border border = new BevelBorder(BevelBorder.RAISED);
    String name = source.toString();
    int index = name.lastIndexOf('/');
    border = new TitledBorder(border,
        name.substring(index + 1));
    setBorder(border);
  }

  protected void buildLayout() {
    setLayout(new BorderLayout());
    downloader.setBorder(new BevelBorder(BevelBorder.RAISED));
    add(downloader, BorderLayout.CENTER);

    add(getButtonPanel(), BorderLayout.SOUTH);
  }

  protected JPanel getButtonPanel() {
    JPanel outerPanel;
    JPanel innerPanel;

    innerPanel = new JPanel();
    innerPanel.setLayout(new GridLayout(1, 5, 10, 0));

    startButton = new JButton("Start");
    startButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        startButton.setEnabled(false);
        sleepButton.setEnabled(true);
        resumeButton.setEnabled(false);
        suspendButton.setEnabled(true);
        stopButton.setEnabled(true);
        downloader.startDownload();
      }
    });
    innerPanel.add(startButton);

    sleepButton = new JButton("Sleep");
    sleepButton.setEnabled(false);
    sleepButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        downloader.setSleepScheduled(true);
      }
    });
    innerPanel.add(sleepButton);

    suspendButton = new JButton("Suspend");
    suspendButton.setEnabled(false);
    suspendButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        suspendButton.setEnabled(false);
        resumeButton.setEnabled(true);
        stopButton.setEnabled(true);
        downloader.setSuspended(true);
      }
    });
    innerPanel.add(suspendButton);

    resumeButton = new JButton("Resume");
    resumeButton.setEnabled(false);
    resumeButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        resumeButton.setEnabled(false);
        suspendButton.setEnabled(true);
        stopButton.setEnabled(true);
        downloader.resumeDownload();
      }
    });
    innerPanel.add(resumeButton);

    stopButton = new JButton("Stop");
    stopButton.setEnabled(false);
    stopButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        stopButton.setEnabled(false);
        sleepButton.setEnabled(false);
        suspendButton.setEnabled(false);
        resumeButton.setEnabled(false);
        downloader.stopDownload();
      }
    });
    innerPanel.add(stopButton);

    outerPanel = new JPanel();
    outerPanel.add(innerPanel);
    return outerPanel;
  }

}

⌨️ 快捷键说明

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