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

📄 downloadmanager.java

📁 一个网络上传下载器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                addDownloadButtonActionPerformed(evt);            }        });        editMenuItem1.add(jMenuItem1);        jMenuBar2.add(editMenuItem1);        controlMenuItem.setText("Control");        controlMenuItem.setName("controlMenuItem"); // NOI18N        startMenuItem.setText("Start");        startMenuItem.setName("startMenuItem"); // NOI18N        startMenuItem.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                startMenuItemActionPerformed(evt);            }        });        controlMenuItem.add(startMenuItem);        pauseMenuItem.setText("Pause");        pauseMenuItem.setName("pauseMenuItem"); // NOI18N        pauseMenuItem.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                pauseButtonActionPerformed(evt);            }        });        controlMenuItem.add(pauseMenuItem);        resumeMenuItem.setText("Resume");        resumeMenuItem.setName("resumeMenuItem"); // NOI18N        resumeMenuItem.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                resumeButtonActionPerformed(evt);            }        });        controlMenuItem.add(resumeMenuItem);        stopMenuItem.setText("Stop");        stopMenuItem.setName("stopMenuItem"); // NOI18N        stopMenuItem.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                cancelButtonActionPerformed(evt);            }        });        controlMenuItem.add(stopMenuItem);        jMenuBar2.add(controlMenuItem);        helpMenuItem.setText("Help");        helpMenuItem.setName("helpMenuItem"); // NOI18N        aboutMenuItem.setText("About");        aboutMenuItem.setName("aboutMenuItem"); // NOI18N        helpMenuItem.add(aboutMenuItem);        jMenuBar2.add(helpMenuItem);        setJMenuBar(jMenuBar2);        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());        getContentPane().setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addGap(18, 18, 18)                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                .addContainerGap(60, Short.MAX_VALUE))        );        layout.setVerticalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                .addContainerGap())        );        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();        setBounds((screenSize.width-800)/2, (screenSize.height-640)/2, 800, 640);    }// </editor-fold>//GEN-END:initComponents    /** This method is called when system initiate.     ** It is used to initiate settings of Downloads table.     */    private void setDownloadsTableModel() {        //Setup download table        jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {            public void valueChanged(ListSelectionEvent e) {                tableSelectionChanged();            }        });        // Allow only one row at a time to be selected.        jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        // Set up ProgressBar as renderer for progress column.        ProgressRenderer renderer = new ProgressRenderer(0, 100);        renderer.setStringPainted(true); // show progress text        jTable1.setDefaultRenderer(JProgressBar.class, renderer);        // Set table's row height large enough to fit JProgressBar.        jTable1.setRowHeight((int) renderer.getPreferredSize().getHeight());    }    private void addDownloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addDownloadButtonActionPerformed        String urlString = txtURL.getText();        String rename = txtRenameAs.getText().trim().toString();        actionAdd(urlString, Integer.parseInt(threadsSpinner.getValue().toString()),                this.txtSaveTo.getText() + "\\", rename);        //follows are temped set        pauseButton.setEnabled(false);        resumeButton.setEnabled(false);        cancelButton.setEnabled(false);        this.removeDownloadButton.setEnabled(false);        this.startButton.setEnabled(false);    // end temped set.                        }//GEN-LAST:event_addDownloadButtonActionPerformed    private void fileExitMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileExitMenuItem1ActionPerformed        System.exit(0);    }//GEN-LAST:event_fileExitMenuItem1ActionPerformed    private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed        // TODO add your handling code here:        FolderSelected folderSelected = new FolderSelected(DownloadManager.this);        txtSaveTo.setText(folderSelected.getFolderPath());    }//GEN-LAST:event_browseButtonActionPerformed    private void removeDownloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeDownloadButtonActionPerformed        // TODO add your handling code here:        clearing = true;        tableModel.clearDownload(table.getSelectedRow());        clearing = false;        selectedDownload = null;        updateButtons();    }//GEN-LAST:event_removeDownloadButtonActionPerformed    private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseButtonActionPerformed        // TODO add your handling code here:        selectedDownload.pause();        updateButtons();    }//GEN-LAST:event_pauseButtonActionPerformed    private void resumeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resumeButtonActionPerformed        // TODO add your handling code here:        selectedDownload.resume();        updateButtons();    }//GEN-LAST:event_resumeButtonActionPerformed    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed        // TODO add your handling code here:        selectedDownload.cancel();        updateButtons();    }//GEN-LAST:event_cancelButtonActionPerformed    private void startMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startMenuItemActionPerformed    // TODO add your handling code here:    }//GEN-LAST:event_startMenuItemActionPerformed    private void menuItemCodeManagerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemCodeManagerActionPerformed        // TODO add your handling code here:        new CodeManager().setVisible(true);        this.dispose();}//GEN-LAST:event_menuItemCodeManagerActionPerformed    private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startButtonActionPerformed    // TODO add your handling code here:    }//GEN-LAST:event_startButtonActionPerformed    /**    this method is called when adding a new download.    @param urlString   full URL path    @param threadNumber    number of threads set to one download job    @param localFileAddress    local path which is saved    @param filename    downloading file name     */    private void actionAdd(String urlString, int threadNumber, String localFileAddress, String filename) {        try {            URL verifyUrl = new URL(urlString);            if (verifyUrl != null) {                tableModel.addDownload(new Download(verifyUrl, threadNumber, localFileAddress, filename));            } else {                JOptionPane.showMessageDialog(this,                        "Invalid Download URL", "Error",                        JOptionPane.ERROR_MESSAGE);            }        } catch (MalformedURLException malURLe) {            System.err.println(malURLe);        }    }    /**    this method is called when table row selection changes.     */    private void tableSelectionChanged() {        /* Unregister from receiving notifications        from the last selected download. */        if (selectedDownload != null) {            selectedDownload.deleteObserver(DownloadManager.this);        }        /* If not in the middle of clearing a download,        set the selected download and register to        receive notifications from it. */        if (!removing) {            selectedDownload =                    tableModel.getDownload(table.getSelectedRow());            selectedDownload.addObserver(DownloadManager.this);            updateButtons();        }    }    /**    Update each button's state based off of the    currently selected download's status.     */    private void updateButtons() {        if (selectedDownload != null) {            int status = selectedDownload.getStatus();            switch (status) {                case Download.DOWNLOADING:                    pauseButton.setEnabled(true);                    resumeButton.setEnabled(false);                    cancelButton.setEnabled(true);                    //clearButton.setEnabled(false);                    break;                case Download.PAUSED:                    pauseButton.setEnabled(false);                    resumeButton.setEnabled(true);                    cancelButton.setEnabled(true);                    //clearButton.setEnabled(false);                    break;                case Download.ERROR:                    pauseButton.setEnabled(false);                    resumeButton.setEnabled(true);                    cancelButton.setEnabled(false);                    // clearButton.setEnabled(true);                    break;                default: // COMPLETE or CANCELLED                    pauseButton.setEnabled(false);                    resumeButton.setEnabled(false);                    cancelButton.setEnabled(false);                //clearButton.setEnabled(true);            }        } else {            // No download is selected in table.            pauseButton.setEnabled(false);            resumeButton.setEnabled(false);            cancelButton.setEnabled(false);        //clearButton.setEnabled(false);        }    }    /**    Update is called when a Download notifies its    observers of any changes.    @param o observed object which implement the Observalbe    @param arg     */    public void update(Observable o, Object arg) {        //Update buttons if the selected download has changed.        if (selectedDownload != null && selectedDownload.equals(o)) {            updateButtons();        }    }    /**    @param args the command line arguments     */    public static void main(String args[]) {        java.awt.EventQueue.invokeLater(new Runnable() {            public void run() {                new DownloadManager().setVisible(true);            }        });    }    // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JMenuItem aboutMenuItem;    private javax.swing.JButton addDownloadButton;    private javax.swing.JButton browseButton;    private javax.swing.JButton cancelButton;    private javax.swing.JPanel controlButtonPanel;    private javax.swing.JMenu controlMenuItem;    private javax.swing.JPanel downloadsPanel;    private javax.swing.JMenu editMenuItem1;    private javax.swing.JMenuItem fileExitMenuItem1;    private javax.swing.JMenu fileMenuItem1;    private javax.swing.JMenu helpMenuItem;    private javax.swing.JLabel jLabel1;    private javax.swing.JLabel jLabel2;    private javax.swing.JLabel jLabel3;    private javax.swing.JLabel jLabel5;    private javax.swing.JMenuBar jMenuBar2;    private javax.swing.JMenuItem jMenuItem1;    private javax.swing.JPanel jPanel1;    private javax.swing.JPanel jPanel2;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JSeparator jSeparator2;    private javax.swing.JTable jTable1;    private javax.swing.JMenuItem menuItemCodeManager;    private javax.swing.JButton pauseButton;    private javax.swing.JMenuItem pauseMenuItem;    private javax.swing.JButton removeDownloadButton;    private javax.swing.JButton resumeButton;    private javax.swing.JMenuItem resumeMenuItem;    private javax.swing.JButton showDetailsButton;    private javax.swing.JButton startButton;    private javax.swing.JMenuItem startMenuItem;    private javax.swing.JMenuItem stopMenuItem;    private javax.swing.JSpinner threadsSpinner;    private javax.swing.JTextField txtRenameAs;    private javax.swing.JTextField txtSaveTo;    public javax.swing.JTextField txtURL;    // End of variables declaration//GEN-END:variables    // Variables Declaration    private DownloadsTableModel tableModel; // Download table's data model.      private JTable table;   // Table listing downloads.    private Download selectedDownload;  // Currently selected download.    private boolean removing;   // Flag for whether or not table     // Flag for whether or not table selection is being cleared.    private boolean clearing;    //selection is being cleared.    // End of variables declaration    }

⌨️ 快捷键说明

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