Разработка менеджера закачек
Заказать уникальную курсовую работу- 28 28 страниц
- 10 + 10 источников
- Добавлена 16.04.2013
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Введение
1.Постановка задачи
2. Описание языка Java
3. Описание классов
Класс JFileLoaderGUI.Конструктор
Класс JFileLoaderGUI. Метод addFileLoadTask
4. Интерфейс программы
Приложение. Текст программы на языке Java
КлассJFileLoaderGUI
КлассJFileLoader
Список литературы
Ход выполнения загрузки файла показывается в поле журнала загрузки (рис. 4.6). Рис. 4.6. Процесс загрузки файлаЕсли файл имеет большой размер, процесс загрузки может занять значительное время. Для остановки длительной загрузки можно воспользоваться кнопкой или пунктом меню «Стоп». В случае если по указанной ссылке не существует файл для загрузки, программа выдаёт сообщение об ошибке (рис. 4.7) и завершает процесс загрузки.Рис. 4.7. Сообщение об отсутствии исходного файлаПриложение. Текст программы на языке JavaКлассJFileLoaderGUIimportjava.awt.BorderLayout;import java.awt.event.ActionListener;importjava.awt.event.ActionEvent;importjava.awt.FlowLayout;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.awt.FileDialog;importjava.awt.MenuItem;importjava.awt.Menu;importjava.awt.MenuBar;importjava.awt.TextArea;importjava.net.URL;importjava.util.Date;importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjavax.swing.BorderFactory;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JProgressBar;importjavax.swing.JScrollPane;importjavax.swing.JTextField;publicclassJFileLoaderGUIextendsJFrame{privateMenuBarmenuBar;private Menu menuFile;private Menu menuHelp;private MenuItem mitmStart;private MenuItem mitmStop;private MenuItem mitmClear;private MenuItem mitmExit;private MenuItem mitmAbout;private JLabel lblFilePath;//подписькполюсадресомзагружаемогофайлаprivate JTextField txtFilePath;//aдресзагружаемогофайлаprivate JButton btnStart; //кнопкастартазагрузкиprivate JButton btnStop; //кнопкаостановкизагрузкиprivate JButton btnClear; //кнопкаочисткижурналазагрузокprivateJPanelpanNorth;//панельдляразмещенияЭлементов в верхнейчастиокна (панельадреса и кнопки)privateJPanelpanSouth;//панельдляразмещенияЭлементов в нижнейчастиокна (панельадреса и кнопки)privateJPanelpanLoaderButtons;//панельдляразмещениякнопокпанелиинструментовprivateJPanelpanFilePath; //панельдляразмещенияполногопути к файлуprivate TextArea txtLog;private JProgressBar progBar;privatebooleanisInterrupted; //признакостановкизагрузкиpublic JFileLoaderGUI(){super("Загрузчикфайлов");menuBar = newMenuBar();menuFile = menuBar.add(new Menu("Файл"));menuHelp = menuBar.add(new Menu("Справка"));mitmStart = menuFile.add(new MenuItem("Старт"));mitmStop = menuFile.add(new MenuItem("Стоп"));mitmClear = menuFile.add(new MenuItem("Очистить"));mitmExit = menuFile.add(new MenuItem("Выход"));mitmAbout = menuHelp.add(new MenuItem("Опрограмме..."));lblFilePath = newJLabel("Введите путь к файлу для загрузки:");txtFilePath = new JTextField(30);URL imgURL = JFileLoaderGUI.class.getResource("img/start.png");ImageIcon icon = newImageIcon(imgURL);btnStart = new JButton("Старт");btnStart.setIcon(icon);btnStop = new JButton("Стоп");imgURL = JFileLoaderGUI.class.getResource("img/stop.png");icon = newImageIcon(imgURL);btnStop.setIcon(icon);btnClear = new JButton("Очистить");imgURL = JFileLoaderGUI.class.getResource("img/clear.png");icon = newImageIcon(imgURL);btnClear.setIcon(icon);panNorth = new JPanel(); panNorth.setLayout(newBorderLayout());panSouth = new JPanel();panSouth.setLayout(newBorderLayout());progBar = new JProgressBar();panSouth.add(progBar);panLoaderButtons = new JPanel();panFilePath = new JPanel();panFilePath.setLayout(newBorderLayout()); panFilePath.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));panLoaderButtons.setLayout(newFlowLayout(FlowLayout.LEFT));panLoaderButtons.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));panLoaderButtons.add(btnStart);panLoaderButtons.add(btnStop);panLoaderButtons.add(btnClear);panFilePath.add(lblFilePath, "North");panFilePath.add(txtFilePath, "Center");txtLog = new TextArea();txtLog.setEditable(false);setMenuBar(menuBar);panNorth.add(panLoaderButtons, "North"); panNorth.add(panFilePath, "South");getContentPane().setLayout(newBorderLayout());getContentPane().add(panNorth, "North");getContentPane().add(newJScrollPane(txtLog), "Center");getContentPane().add(panSouth, "South");setDefaultCloseOperation(EXIT_ON_CLOSE);txtFilePath.addActionListener(newJFileLoaderFilePathActionListener());btnStart.addActionListener(newJFileLoaderFilePathActionListener());mitmStart.addActionListener(newJFileLoaderFilePathActionListener());btnStop.addActionListener(newJFileLoaderStopActionListener());mitmStop.addActionListener(newJFileLoaderStopActionListener());btnClear.addActionListener(newJFileLoaderClearActionListener());mitmClear.addActionListener(newJFileLoaderClearActionListener());mitmAbout.addActionListener(newJFileLoaderAboutActionListener());mitmExit.addActionListener(newJFileLoaderExitActionListener());setSize(605, 400);isInterrupted = false;txtFilePath.requestFocus();setVisible(true);}//загрузкафайлапоуказанномупутивуказанныйкаталогpublicvoid addFileLoadTask(String pFilePath){txtFilePath.setText(txtFilePath.getText().trim());if (txtFilePath.getText().isEmpty()){JOptionPane.showMessageDialog(JFileLoaderGUI.this, "Неуказанпутькзагружаемомуфайлу!", "Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);return;}try{File sourceFile = newFile(txtFilePath.getText());if (!sourceFile.exists()){JOptionPane.showMessageDialog(JFileLoaderGUI.this, "Указанныйфайлнесуществуетнахостедлязагрузки!", "Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);return;}FileDialog fileToSave = newFileDialog(this, "Загрузчикфайлов", FileDialog.SAVE);fileToSave.setVisible(true);String destFileName = fileToSave.getFile(), destFileFullPath;if(destFileName != null){destFileFullPath = fileToSave.getDirectory() + destFileName;}else{JOptionPane.showMessageDialog(JFileLoaderGUI.this, "Неуказанпутьдлясохранениязагружаемогофайла!", "Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);return;}if (destFileName == txtFilePath.getText()){JOptionPane.showMessageDialog(JFileLoaderGUI.this, "Путифайла-источникаифайла-назначениясовпадают!", "Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);return;}File destFile = new File (destFileFullPath);FileInputStream sourceStream = new FileInputStream (sourceFile);FileOutputStream destStream = newFileOutputStream(destFile);int curByte;isInterrupted = false;Long sourceBytes = newLong(sourceFile.length());Long destBytes = newLong(0);progBar.setMaximum(100);DateFormatdf = newSimpleDateFormat("yyyy.MM.ddHH:mm:ss");txtLog.append(df.format(new Date()) + " Загрузкафайла " + sourceFile.getAbsolutePath() + "\n");txtLog.append(df.format(new Date()) + " Размерфайла (байт): " + sourceFile.length() + "\n");txtLog.append(df.format(new Date()) + " Файлназначения: " + destFile.getAbsolutePath() + "\n");while ((curByte = sourceStream.read()) != -1){if (isInterrupted)break;destStream.write(curByte);destBytes++;}sourceStream.close();destStream.close();isInterrupted = false;txtLog.append("Файлзагруженуспешно!\n");}catch (IOException ex){JOptionPane.showMessageDialog(JFileLoaderGUI.this, "Ошибказагрузкифайла!"+ ex.getMessage().toString(), "Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);txtLog.append("Ошибказагрузкифайла: " + ex.getMessage().toString() + "\n");}}//обработчикстартазагрузкифайлаclassJFileLoaderFilePathActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvent e){ addFileLoadTask(txtFilePath.getText());}} //обработчикостановкизагрузкиclassJFileLoaderStopActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvent e){isInterrupted = true;} }//обработчикочисткижурналаclassJFileLoaderClearActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvent e){txtLog.setText("");} }//обработчикпунктаОпрограммеclassJFileLoaderAboutActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(JFileLoaderGUI.this, "ПрограммазагрузкифайловJFileLoader.(C) 2013 г.","Загрузчикфайлов", JOptionPane.INFORMATION_MESSAGE);} }//обработчикзакрытияпрограммыclassJFileLoaderExitActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvent e) {if (JOptionPane.showConfirmDialog(JFileLoaderGUI.this, "Выуверены, чтохотитевыйти?", "Загрузчикфайлов", JOptionPane.YES_NO_CANCEL_OPTION) == JOptionPane.YES_OPTION)dispose();}}}КлассJFileLoaderpublicclassJFileLoader {publicstaticvoid main(String[] args) {newJFileLoaderGUI();}}Список литературы1Бадд Т. Объектно-Ориентированное программирование. - СПб.: Питер, 2007.2ИвановаГ.С., НичушкинаТ.Н., ПугачевЕ.К. Объектно-ориентированное программирование Под редакцией Г.С.Ивановой. - М.: Издательство МГТУ имени Н.Э.Баумана, 2001.3Портянкин И. SwingЭффективные пользовательские интерфейсы. - СПб.: Питер, 2005.4Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 1. Основы. 8-изд: Пер. с англ. - М.: Вильямс, 2010.5Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 2. Тонкости программирования. 8-изд: Пер. с англ. - М.: Вильямс, 2010.6http://docs.oracle.com/javase/7/docs/api/index.html7http://www.javable.com/tutorials/fesunov8http://www.javatutor.net9www.intuit.ru10www.wikipedia.org
2ИвановаГ.С., НичушкинаТ.Н., ПугачевЕ.К. Объектно-ориентированное программирование Под редакцией Г.С.Ивановой. - М.: Издательство МГТУ имени Н.Э.Баумана, 2001.
3Портянкин И. SwingЭффективные пользовательские интерфейсы. - СПб.: Питер, 2005.
4Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 1. Основы. 8-изд: Пер. с англ. - М.: Вильямс, 2010.
5Хорстманн К., Корнелл Г. Java 2. Библиотека профессионала, том 2. Тонкости программирования. 8-изд: Пер. с англ. - М.: Вильямс, 2010.
6http://docs.oracle.com/javase/7/docs/api/index.html
7http://www.javable.com/tutorials/fesunov
8http://www.javatutor.net
9www.intuit.ru
10www.wikipedia.org
Вопрос-ответ:
Какая задача стоит перед разработчиком менеджера закачек?
Задача разработчика менеджера закачек - создать программу, которая позволит загружать файлы из интернета на компьютер пользователя.
Какие особенности имеет язык программирования Java?
Язык программирования Java имеет следующие особенности: он объектно-ориентированный, платформонезависимый, обладает автоматической сборкой мусора, имеет богатую стандартную библиотеку и поддерживает многопоточность.
Опишите конструктор класса JFileLoaderGUI
Конструктор класса JFileLoaderGUI выполняет инициализацию графического интерфейса программы, включая создание и размещение кнопок, полей ввода и журнала загрузки.
Как добавить задачу загрузки файла в программу?
Для добавления задачи загрузки файла в программе необходимо использовать метод addFileLoadTask класса JFileLoaderGUI. Этот метод принимает параметры, такие как URL файла, путь для сохранения файла и имя файла, и создает объект класса JFileLoader для выполнения задачи загрузки.
Что происходит при загрузке файла большого размера?
Если файл имеет большой размер, процесс загрузки может занять значительное время. Во время загрузки в поле журнала загрузки отображается ход выполнения загрузки файла.
Какая задача решается при разработке менеджера закачек?
Задача разработки менеджера закачек заключается в создании программы, которая позволяет загружать файлы из интернета на компьютер пользователя. Это может быть полезно, например, когда нужно сохранить видео или аудио файлы с сайта для последующего просмотра или прослушивания офлайн.
Какой язык программирования используется для разработки менеджера закачек?
Для разработки менеджера закачек в данной статье используется язык программирования Java. Java является одним из самых популярных языков программирования, который широко применяется для создания различных приложений.
Какие классы описываются в статье?
В статье рассматриваются два класса: JFileLoaderGUI и JFileLoader. Класс JFileLoaderGUI служит для создания графического интерфейса пользователя, а класс JFileLoader отвечает за загрузку файлов.
Что делает конструктор класса JFileLoaderGUI?
Конструктор класса JFileLoaderGUI инициализирует графический интерфейс программы. Он создает все необходимые компоненты, располагает их на форме и задает обработчики событий.
Что происходит при вызове метода addFileLoadTask?
Метод addFileLoadTask добавляет новую задачу загрузки файла в программу. Он принимает на вход ссылку на файл и запускает соответствующий процесс загрузки. Адрес файла и прогресс загрузки отображаются в поле журнала загрузки.