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

📄 downloadgui.java

📁 Java写的下载文件程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*DownloadGUI.java*/

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;

public class DownloadGUI implements ActionListener,MouseListener,
                  PopupMenuListener,WindowListener,ChangeListener
{
  //定义私有成员对象
  private JFrame mainFrame=null;
  private JButton closeButton=null;
  private JButton addButton=null;
  private JButton deleteButton=null;
  private JButton startButton=null;
  private JButton stopButton=null;
  private JTable dataTable=null;
  private DownloadSetting setting=null;
  private UserModel defaultModel=null;
  private JMenuBar myMenuBar=null;
  private JMenu fileMenu=null;
  private JMenu viewMenu=null;
  private JMenu helpMenu=null;
  private JMenu styleMenu=null;
  private JMenuItem addMenuItem=null;
  private JMenuItem deleteMenuItem=null;
  private JMenuItem startMenuItem=null;
  private JMenuItem stopMenuItem=null;
  private JMenuItem selectallMenuItem=null;
  private JMenuItem deselectallMenuItem=null;
  private JMenuItem exitMenuItem=null;
  private JMenuItem javaMenuItem=null;
  private JMenuItem windowMenuItem=null;
  private JMenuItem macintoshMenuItem=null;
  private JMenuItem aboutMenuItem=null;
  private JMenuItem contentMenuItem=null;
  private JPopupMenu popup=null;
  private JProgressBar progressbar=null;
  private javax.swing.Timer timer=null;
  private Vector filedownVector=null;

  //构造函数
  public DownloadGUI()
  {
    mainFrame=new JFrame("无限下载");         //程序主框架
    setting=new DownloadSetting(mainFrame);   //添加新任务时的窗口
    Container pan=mainFrame.getContentPane(); //获得主框架的内部容器
    pan.setLayout(null);//屏蔽默认的版面管理器,采用自行调整的版面方案

    //建立程序中主菜单"文件"下的菜单项
    addMenuItem=new JMenuItem("添加(A)");
    addMenuItem.setMnemonic('A');
    addMenuItem.setAccelerator(KeyStroke.getKeyStroke('A',
                           java.awt.Event.CTRL_MASK,true));
    addMenuItem.addActionListener(this);
    deleteMenuItem=new JMenuItem("删除(D)");
    deleteMenuItem.setMnemonic('D');
    deleteMenuItem.setAccelerator(KeyStroke.getKeyStroke('D',
                             java.awt.Event.CTRL_MASK,true));
    deleteMenuItem.addActionListener(this);
    startMenuItem=new JMenuItem("启动(S)");
    startMenuItem.setMnemonic('S');
    startMenuItem.setAccelerator(KeyStroke.getKeyStroke('S',
                            java.awt.Event.CTRL_MASK,true));
    startMenuItem.addActionListener(this);
    stopMenuItem=new JMenuItem("停止(T)");
    stopMenuItem.setMnemonic('T');
    stopMenuItem.setAccelerator(KeyStroke.getKeyStroke('T',
                          java.awt.Event.CTRL_MASK,false));
    stopMenuItem.addActionListener(this);
    exitMenuItem=new JMenuItem("退出(X)");
    exitMenuItem.setMnemonic('X');
    exitMenuItem.setAccelerator(KeyStroke.getKeyStroke('X',
                           java.awt.Event.CTRL_MASK,true));
    exitMenuItem.addActionListener(this);
    selectallMenuItem=new JMenuItem("全部选中");
    selectallMenuItem.addActionListener(this);
    deselectallMenuItem=new JMenuItem("全部取消");
    deselectallMenuItem.addActionListener(this);
    fileMenu=new JMenu("文件(F)");
    fileMenu.setMnemonic('F');
    fileMenu.add(addMenuItem);
    fileMenu.add(deleteMenuItem);
    fileMenu.add(startMenuItem);
    fileMenu.add(stopMenuItem);
    fileMenu.addSeparator();
    fileMenu.add(selectallMenuItem);
    fileMenu.add(deselectallMenuItem);
    fileMenu.addSeparator();
    fileMenu.add(exitMenuItem);

    //建立程序中主菜单"显示"下的菜单项
    javaMenuItem=new JMenuItem("Java模式 ");
    javaMenuItem.setMnemonic('J');
    javaMenuItem.setAccelerator(KeyStroke.getKeyStroke('J',
                           java.awt.Event.CTRL_MASK,true));
    javaMenuItem.addActionListener(this);
    windowMenuItem=new JMenuItem("Window模式");
    windowMenuItem.setMnemonic('W');
    windowMenuItem.setAccelerator(KeyStroke.getKeyStroke('W',
                             java.awt.Event.CTRL_MASK,true));
    windowMenuItem.addActionListener(this);
    macintoshMenuItem=new JMenuItem("Macintosh模式");
    macintoshMenuItem.setMnemonic('M');
    macintoshMenuItem.setAccelerator(KeyStroke.getKeyStroke('M',
                                java.awt.Event.CTRL_MASK,true));
    macintoshMenuItem.addActionListener(this);
    styleMenu=new JMenu("模式(S)");
    styleMenu.setMnemonic('S');
    styleMenu.add(javaMenuItem);
    styleMenu.add(windowMenuItem);
    styleMenu.add(macintoshMenuItem);
    viewMenu=new JMenu("显示(V)");
    viewMenu.setMnemonic('V');
    viewMenu.add(styleMenu);

    //建立程序中主菜单帮助"下的菜单项
    contentMenuItem=new JMenuItem("帮助主题");
    contentMenuItem.addActionListener(this);
    aboutMenuItem=new JMenuItem("关于...");
    aboutMenuItem.addActionListener(this);
    helpMenu=new JMenu("帮助(H)");
    helpMenu.setMnemonic('H');
    helpMenu.add(contentMenuItem);
    helpMenu.add(aboutMenuItem);

    //将菜单条添加到主框架窗口上
    myMenuBar=new JMenuBar();
    myMenuBar.setOpaque(true);
    myMenuBar.add(fileMenu);
    myMenuBar.add(viewMenu);
    myMenuBar.add(helpMenu);
    mainFrame.setJMenuBar(myMenuBar);

    //建立弹出式菜单
    popup=new JPopupMenu();
    popup.addPopupMenuListener(this);
    popup.setBorder(new BevelBorder(BevelBorder.RAISED));

    //建立表格
    Vector headVector=new Vector(6);
    headVector.addElement("状态");
    headVector.addElement("网络路径");
    headVector.addElement("文件保存");
    headVector.addElement("文件大小");
    headVector.addElement("优先权");
    headVector.addElement("分片数");
    Vector rowVector=getData(); //从用户数据文件中取得下载任务
    defaultModel=new UserModel(rowVector,headVector);
    dataTable=new JTable(defaultModel);
    dataTable.getColumnModel().getColumn(0).setPreferredWidth(50);
    dataTable.getColumnModel().getColumn(1).setPreferredWidth(200);
    dataTable.getColumnModel().getColumn(2).setPreferredWidth(150);
    dataTable.getColumnModel().getColumn(3).setPreferredWidth(100);
    dataTable.getColumnModel().getColumn(4).setPreferredWidth(50);
    dataTable.getColumnModel().getColumn(5).setPreferredWidth(50);
    dataTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    dataTable.setRowSelectionAllowed(true);
    if (dataTable.getRowCount()>0)
      dataTable.setRowSelectionInterval(0,0);//默认选中第一行
    dataTable.add(popup);
    dataTable.addMouseListener(this);
    JScrollPane scroll=new JScrollPane(dataTable);

    //根据表格中的数据建立下载文件的线程
    filedownVector=new Vector();
    try
    {
     for(int i=0;i<rowVector.size();i++)
     {
      FileDown tempFileDown;
      tempFileDown=new FileDown((Vector)rowVector.elementAt(i));
      tempFileDown.start();
      dataTable.setValueAt(tempFileDown.getStatus(),i,0);
      long tempLong=tempFileDown.getFileLength();
      dataTable.setValueAt(String.valueOf(tempLong),i,3);
      filedownVector.addElement(tempFileDown);
     }  
    }
    catch (IOException e){ e.printStackTrace(); }
    rowVector=null;
    headVector=null;

    //建立命令按钮
    closeButton=new JButton("关闭(C)");
    closeButton.addActionListener(this);
    closeButton.setMnemonic('C');
    addButton=new JButton("添加(A)");
    addButton.addActionListener(this);
    addButton.setMnemonic('A');
    deleteButton=new JButton("删除(D)");
    deleteButton.addActionListener(this);
    deleteButton.setMnemonic('D');
    startButton=new JButton("启动(S)");
    startButton.addActionListener(this);
    startButton.setMnemonic('S');
    stopButton=new JButton("停止(T)");
    stopButton.addActionListener(this);
    stopButton.setMnemonic('T');

    //建立进度条和时间控件
    progressbar = new JProgressBar();
    progressbar.setOrientation(JProgressBar.HORIZONTAL);
    progressbar.setMinimum(0);
    progressbar.setMaximum(100);
    progressbar.setValue(0);
    progressbar.setStringPainted(true);
    progressbar.setBorderPainted(false);
    progressbar.setBorder(new BevelBorder(BevelBorder.LOWERED));
    progressbar.addChangeListener(this);
    timer = new javax.swing.Timer(100,this);
    timer.start();

    //将各种成员对象添加到主框架窗口的版面管理器中
    pan.add(closeButton);
    pan.add(addButton);
    pan.add(deleteButton);
    pan.add(startButton);
    pan.add(stopButton);
    pan.add(scroll);
    pan.add(progressbar);

    //设置各个成员对象的边界位置和外观大小
    closeButton.setBounds(610,5,80,30);
    addButton.setBounds(610,65,80,30);
    deleteButton.setBounds(610,100,80,30);
    startButton.setBounds(610,135,80,30);
    stopButton.setBounds(610,170,80,30);
    progressbar.setBounds(5,210,600,40);
    scroll.setBounds(3,5,603,200);
    mainFrame.pack();
    mainFrame.setBounds(50,50,700,300);
    mainFrame.setForeground(Color.darkGray);
    mainFrame.setResizable(false);
    mainFrame.setVisible(true);
    mainFrame.addWindowListener(this);
  }//结束构造函数DownloadGUI()

  /*以下部分是对各个接口的实现*/

  //实现 ActionListener接口(针对菜单项和命令按钮)
  public void actionPerformed(ActionEvent e)
  {
    if((e.getSource()==addButton) || (e.getSource()==addMenuItem))
      addFunc();
    if((e.getSource()==deleteButton)||(e.getSource()==deleteMenuItem))
      deleteFunc();
    if((e.getSource()==startButton) || (e.getSource()==startMenuItem))
      startFunc();
    if((e.getSource()==stopButton) || (e.getSource()==stopMenuItem))
      stopFunc();
    if((e.getSource()==closeButton) || (e.getSource()==exitMenuItem))
      closeFunc();
    if(e.getSource()==selectallMenuItem)
      selectallFunc();
    if(e.getSource()==deselectallMenuItem)
      deselectallFunc();
    if(e.getSource()==javaMenuItem)
      javaFunc();
    if(e.getSource()==windowMenuItem)
      windowFunc();
    if(e.getSource()==macintoshMenuItem)
      macintoshFunc();
    if(e.getSource()==contentMenuItem)
      contentFunc();
    if(e.getSource()==aboutMenuItem)
      aboutFunc();
    if (e.getSource()==timer)
    {
     int row=dataTable.getSelectedRow();
     if (row>-1)
     {
      int x=((FileDown)(filedownVector.elementAt(row))).getProgress();
      progressbar.setValue(x);
     }
     else { progressbar.setValue(0);}
    }
  }//结束接口函数actionPerformed()

  //实现 MouseListener接口(针对表格)
  public void mousePressed(MouseEvent me){ checkPopup(me);}
  public void mouseReleased(MouseEvent me){ checkPopup(me);}
  public void mouseEntered(MouseEvent me){}
  public void mouseExited(MouseEvent me){}
  public void mouseClicked(MouseEvent e)
  {
    checkPopup(e); //判断是否需要显示弹出式菜单
    if(e.getClickCount()==2) //当双击鼠标时显示选中的任务详细信息
    {
      int row=dataTable.getSelectedRow();
      if (row>=0)
      {
        Vector temp=new Vector();
        temp.addElement(defaultModel.getValueAt(row,1).toString());
        temp.addElement(defaultModel.getValueAt(row,2).toString());
        temp.addElement(defaultModel.getValueAt(row,4).toString());
        temp.addElement(defaultModel.getValueAt(row,5).toString());
        setting.setMode(2,temp);
      }
    }
  }//结束接口函数mouseClicked()

  //实现 PopupMenuListener接口(针对表格)

⌨️ 快捷键说明

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