博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GUI---深度复制
阅读量:4878 次
发布时间:2019-06-11

本文共 9292 字,大约阅读时间需要 30 分钟。

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
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();    }}

 

转载于:https://www.cnblogs.com/King-boy/p/11046813.html

你可能感兴趣的文章
(转)为什么所有浏览器的userAgent都带Mozilla
查看>>
织梦字段属性筛选
查看>>
[Arduino] Leonardo 中文介绍
查看>>
无法加载csopenglc.dll;找不到指定模块
查看>>
08.路由规则中定义参数
查看>>
【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
查看>>
Pandas截取列部分字符,并据此修改另一列的数据
查看>>
Android性能优化(2)
查看>>
java.lang.IllegalArgumentException
查看>>
pytest
查看>>
python爬取某个网站的图片并保存到本地
查看>>
【Spark】编程实战之模拟SparkRPC原理实现自定义RPC
查看>>
关于Setup Factory 9的一些使用方法
查看>>
接口实现观察者模式
查看>>
网站Session 处理方式
查看>>
记开发个人图书收藏清单小程序开发(九)Web开发——新增图书信息
查看>>
四则运算完结篇
查看>>
poj3401二分图
查看>>
Objective-C中的类目,延展,协议
查看>>
Python标准模块--Iterators和Generators
查看>>