• GUI---深度复制


    package gui;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    
    public class MyWindow {
        public static void main(String[] args) {
            //创建窗口
            JFrame frame=new JFrame("我的第一个窗口");
            //设置大小
            frame.setSize(800,600);
            //位置,左上角原点坐标
            frame.setLocation(100,100);
            
            //设置jframe的布局为null
            frame.setLayout(null);
            
            //创建按钮
            JButton button=new JButton("确定"    );
            //设置边界==大小+位置(相对于所在容器的)
            button.setBounds(0, 0, 100, 50);
            
            //给按钮添加监听器
            button.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    frame.dispose();
                }
            });
            
            //将按钮添加给容器
            frame.add(button);
            frame.show();
            
        }
    }

    记事本:

    package gui;
    
    import java.awt.Color;
    import java.awt.FileDialog;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    /**
     * 主窗口
     * @author ASUS
     *
     */
    public class MainFrame extends JFrame implements ActionListener{
    
        /**
         * 
         */
        private static final long serialVersionUID = -8026416994513756565L;
        //按钮
        private JButton btnOK;
        private JButton btnCancel;
        private JTextArea txtArea;
        
        //菜单项
        private JMenuItem miOpen;
        private JMenuItem miExit;
    
        public MainFrame() {
            initFrame();
            this.setVisible(true);
            
        }
        /**
         * 初始化
         */
        private void initFrame() {
            //标题
            this.setTitle("主窗口");
            //边界
            this.setBounds(100, 100, 820, 600);
            
            //绝对布局
            this.setLayout(null);
            
            Font font=new Font("微软雅黑",Font.BOLD,27);
            
            //将文本域添加到滚动面板中
            txtArea = new JTextArea();
            txtArea.setFont(font);
            
            //滚动面板
            JScrollPane scrollPane=new JScrollPane(txtArea);
            scrollPane.setBounds(0,0,800,470);
            this.add(scrollPane);
            
            btnOK = new JButton("保存");
            btnOK.setBounds(500, 475, 100, 50);
            btnOK.setFont(font);
            btnOK.addActionListener(this);
            this.add(btnOK);
            
            btnCancel = new JButton("取消");
            btnCancel.setBounds(610, 475, 100, 50);
            btnCancel.setFont(font);
            btnCancel.addActionListener(this);
            this.add(btnCancel);
            
            //添加窗口事件处理程序,使用适配器
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(-1);
                }
            });
            
            //添加菜单栏
            JMenuBar menuBar=new JMenuBar();
            //添加菜单
            JMenu menu=new JMenu("文件");
            
            miOpen = new JMenuItem("打开");
            miOpen.addActionListener(this);
            //添加菜单项
            menu.add(miOpen);
            
            //分隔符
            menu.addSeparator();
            miExit = new JMenuItem("退出");
            menu.add(miExit);
            miExit.addActionListener(this);
            
            menuBar.add(menu);
            
            this.setJMenuBar(menuBar);
        }
        /**
         * 动作处理程序
         */
        @Override
        public void actionPerformed(ActionEvent e) {
            //得到事件的源
            Object es=e.getSource();
            //保存文件
            if(es==btnOK) {
                try {
                    //打开保存对话框,定位保存文件的位置
                    FileDialog d=new FileDialog(this, "保存", FileDialog.SAVE);
                    d.setVisible(true);
                    File f= new File(d.getDirectory(),d.getFile());
                    
                    String str=txtArea.getText();
                    FileWriter writer=new FileWriter(f);
                    writer.write(str);
                    writer.close();
                    txtArea.setText("");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }else if(es==btnCancel) {
                this.dispose();
            }
            //是否是菜单项
            else if(es==miOpen) {
                
                FileDialog d=new FileDialog(this,"打开",FileDialog.LOAD);
                d.setVisible(true);
                String dir=d.getDirectory();
                String f=d.getFile();
                if(dir!=null && f!=null) {
                    try {
                        txtArea.setText(null);
                        FileReader reader = new FileReader(new File(dir,f));
                        char[] buffer=new char[1024];
                        int len=-1;
                        while((len=reader.read(buffer))!=-1) {
                            txtArea.setText(txtArea.getText()+new String(buffer,0,len));
                        }
                        reader.close();
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }
            }
            else if(es==miExit) {
                System.exit(-1);
            }
        }
    }
    package gui;
    
    public class MyEdito {
        public static void main(String[] args) {
            MainFrame frame=new MainFrame();
        }
    }

    深度复制:

    package mulcopier;
    
    import java.io.FileNotFoundException;
    import java.io.RandomAccessFile;
    
    /**
    *@author :王团结
    *@version: 2019年6月18日下午10:51:22
    *类说明:
    *复制器
    */
    public class Copier {
        private CopyUI copyui;
        //源文件
        private String srcFile;
        //目标目录
        private String destDir;
        //线程数
        private int count;
        
        
        public Copier(CopyUI copyui,String srcFile, String destDir, int count) {
            super();
            this.copyui=copyui;
            this.srcFile = srcFile;
            this.destDir = destDir;
            this.count = count;
        }
        
        /**
         * 开始复制文件
         */
        public void startCopy() {
            int start=0;
            int end=0;
            RandomAccessFile raf=null;
            try {
                
                //计算源文件大小
                raf = new RandomAccessFile(srcFile, "r");
                int fileLength=(int)raf.length();
                
                //设置进度条的最大值 
                copyui.bar.setMaximum(fileLength);
                //每个线程复制的块大小
                int block=fileLength/count;
                
                
                for(int i=0;i<count;i++) {
                    start=i*block;
                    if(i!=(count-1)) {
                        end=(i+1)*block-1;
                    }else {
                        end=fileLength-1;
                    }
                    new CopyThread(copyui,srcFile,destDir,start,end).start();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    package mulcopier;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JProgressBar;
    import javax.swing.JTextField;
    
    /**
     * 主窗口
     * @author ASUS
     *
     */
    public class CopyUI extends JFrame implements ActionListener{
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        //srcFile
        private JLabel lblSrcFile;
        private JTextField tfSrcFile;
        
        //DestDir
        private JTextField tfDestDir;
        private JLabel lblDestDir;
        
        //线程数
        private JLabel lblCount;
        private JTextField tfCount;
        
        //开始按钮
        private JButton btnStart;
        
        public JProgressBar bar;
        
        public CopyUI() {
            init();
            
        }
        private void init() {
            this.setTitle("主窗口");
            this.setBounds(100,100,800,600);
            this.setLayout(null);
            
            //SrcFile标签
            lblSrcFile = new JLabel("源文件");
            lblSrcFile.setBounds(10, 10, 80, 30);
            this.add(lblSrcFile);
            
            tfSrcFile = new JTextField();
            tfSrcFile.setText("D:\\学习\\02大数据基础Hadoop 2.X\\大数据软件工具\\hadoop-2.5.0-cdh5.3.6-src.tar.gz");
            tfSrcFile.setBounds(80, 10, 600, 30);
            this.add(tfSrcFile);
            
            //DestDir标签
            lblDestDir = new JLabel("目标目录");
            lblDestDir.setBounds(10, 80, 80, 30);
            this.add(lblDestDir);
            
            
            tfDestDir = new JTextField();
            tfDestDir.setBounds(80,80, 600, 30);
            tfDestDir.setText("d:/arch/hadoop-2.5.0-cdh5.3.6-src.tar.gz");
            this.add(tfDestDir);
            
            //线程数
            lblCount = new JLabel("线程数");
            lblCount.setBounds(10, 110, 80, 30);
            this.add(lblCount);
            
            tfCount = new JTextField();
            tfCount.setBounds(80, 110, 600, 30);
            tfCount.setText(""+5);
            this.add(tfCount);
            
            //开始按钮
            btnStart = new JButton("开始");
            btnStart.setBounds(10, 160, 100, 30);
            btnStart.addActionListener(this);
            this.add(btnStart);
            
            //进度条
            bar = new JProgressBar();
            bar.setBounds(10, 200,650, 50);
    //        bar.setMaximum(100);
    //        bar.setValue(50);
            this.add(bar);
            
            this.setVisible(true);
            
            //设置窗口适配器
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(-1);
                }
            });
        }
        
        //添加按钮监听
        public void actionPerformed(ActionEvent e) {
            Object source=e.getSource();
            //开始按钮
            if(source==btnStart) {
                String srcFile=tfSrcFile.getText();
                String destDir=tfDestDir.getText();
                int count=Integer.parseInt(tfCount.getText());
                
                //创建复制器对象
                Copier copier=new Copier(this,srcFile, destDir, count);
                copier.startCopy();
            }
        }
    }
    package mulcopier;
    
    public class App {
        public static void main(String[] args) {
            CopyUI w=new CopyUI();
        }
    }
  • 相关阅读:
    python 报错:reduce failed to synchronize: device-side assert triggered
    pytorch 分割二分类的两种形式
    Leetcode 104. 二叉树的最大深度
    LeetCode 78. 子集
    python报错:1only batches of spatial targets supported (non-empty 3D tensors) but got targets of size
    PyTorch:The "freeze_support()" line can be omitted if the program is not going to be frozen
    pytorch创建tensor的四种方法
    Leetcode 四数之和
    C++的类和对象
    结构体
  • 原文地址:https://www.cnblogs.com/King-boy/p/11046813.html
Copyright © 2020-2023  润新知