| Код | import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.io.*;
public class CopyTo { public static void main (String[] args) throws Exception { CopyToFrame frame =new CopyToFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } //Колбашу фремик а на нём всякую всячину ;) class CopyToFrame extends JFrame { public CopyToFrame () { //Настраиваем фрейм setTitle("Обработка почты..."); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); setResizable (false); //Размер окна не изменяется
//Верхняя панель с кнопками panelVerch p1=new panelVerch("Окуда","Куда","d:/1","d:/2/3"); panelVerch p2=new panelVerch("Окуда","Куда","d:/2/3","d:/4"); //Нижняя панель с кнопками panelNiz niz=new panelNiz(p1.getStrIn(),p1.getStrTo(),p2.getStrIn(),p2.getStrTo());
//Вкладки настроек Приёма и Отправки почты JTabbedPane jtp=new JTabbedPane(); jtp.addTab("Приём",p1); jtp.addTab("Отправление",p2);
//Добавляем на фрейм панели setLayout(null); add(jtp); jtp.setBounds(2,0,350,100); add(niz); niz.setBounds(2,105,350,165); } private class panelVerch extends JPanel{//Создание компонентов закладки приёма почты public panelVerch(String nazv1,String nazv2,String put1,String put2){ JLabel label1=new JLabel(nazv1); textIn =new JTextField(put1,22); JLabel label2=new JLabel(nazv2); textTo =new JTextField(put2,22);
//Добавляем к панели компоненты setLayout(null); add(label1); add(textIn); add(label2); add(textTo); label1.setBounds(0,2,70,20); textIn.setBounds(70,2,250,20); label2.setBounds(0,24,70,20); textTo.setBounds(70,24,250,20); } public String getStrIn(){//Метод возвращает путь по которому надо скопировать все файлы return this.textIn.getText(); } public String getStrTo(){//Метод возвращает путь куда надо копировать файлы return this.textTo.getText(); } private JTextField textIn, textTo; //Поля редактирования в которых находятся пути откуда text1 и куда копировать файлы text2 } private class panelNiz extends JPanel{ public panelNiz(String in1, String to1, String in2, String to2 ){
JButton ButtPr = new JButton("Приём почты"); ButtPr.addActionListener(new CopyAllFilesAction(in1,to1)); JButton ButtOt = new JButton("Отправить почту"); ButtOt.addActionListener(new CopyAllFilesAction(in2,to2));
//Информационная панель info=new JTextArea(9,27); info.setEditable(false); JScrollPane jsp = new JScrollPane(info);
//Добавляем к панели компоненты setLayout(null); setBorder(BorderFactory.createEtchedBorder());//Рамочка для кнопок add(jsp); add(ButtPr); add(ButtOt); jsp.setBounds(2,2,345,130); ButtPr.setBounds(12,134,150,25); ButtOt.setBounds(180,134,150,25); } }
// Событие, переписывание всех файлов одного каталога в другой class CopyAllFilesAction implements ActionListener { public CopyAllFilesAction(String p1,String p2){//Конструктор //Путь откуда и куда писать файлы putIn=p1; putTo=p2; } public void actionPerformed(ActionEvent event){ try{
File f1=new File(putIn); File f2=new File(putTo);
if (f1.isDirectory()){//Проверяю правильно указан директорий или нет if (f2.isDirectory()){//Проверяю правильно указан директорий или нет info.append("Копирование начато.\n");
String s[]=f1.list(); //Получаю список директориев и файлов
for (int j=0; j<s.length; j++){ //Сейчас мы их попорядочку будем копировать File f =new File(putIn+"/"+s[j]);
if (!f.isDirectory()){ //Если это не директорий - тогда копируем
FileInputStream fi = new FileInputStream(f); FileOutputStream fo =new FileOutputStream(putTo+"/"+s[j]);
int size = fi.available(); //Размерчик файлика определяем
// Копируем файл for (int i=0; i<size; i++) fo.write(fi.read());
//Освобождаем ресурсы fi.close(); fo.close(); info.append("Скопирован "+s[j]+"\n"); } } info.append("Приём почты завершён.\n"); }else{info.append("В поле Куда указан не директорий!\n");} }else{info.append("В поле Откуда указан не директорий!\n");}
} catch (FileNotFoundException exception){ info.append("Файлов почты не найдено!!\n"); exception.printStackTrace(); } catch (IOException exception){ exception.printStackTrace(); } } private String putIn,putTo; //Путь откуда и куда писать файлы } //Приватные переменнные private JTextArea info; //Текстовая область в которую выводится информация о действиях, осуществлённых программой private static final int DEFAULT_WIDTH =360; private static final int DEFAULT_HEIGHT=305; }
|
Подскажите пожалуйста, как использовать класс CopyAllFilesAction(String p1,String p2) таким образом, чтобы он брал текущие настройки полей редактирования каталогов textIn.getText() и textTo.getText() соответствующих закладок? Спасибо.
|