package vvv;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import com.vci.vm.pdm.Pdm;
//导入必要的包

public class denglu<E> extends JFrame {
    JTextField jTextField;
    JTextField jPasswordField;
    JLabel jLabel1, jLabel2;
    JPanel jp1, jp2, jp4;
    JScrollPane jp3;
    JButton jb1, jb2, imbtn;
    JTable jtable;

String[] columnTitle = { "请选择", "文件名", "创建时间", "最后修改时间" };
    List<Column216> list = new ArrayList<Column216>();
    CustomModel mod;

public denglu() {

// 设置窗口居中显示
        int windowWidth = this.getWidth(); // 获得窗口宽
        int windowHeight = this.getHeight(); // 获得窗口高
        Toolkit kit = Toolkit.getDefaultToolkit(); // 定义工具包
        Dimension screenSize = kit.getScreenSize(); // 获取屏幕的尺寸
        int screenWidth = screenSize.width; // 获取屏幕的宽
        int screenHeight = screenSize.height; // 获取屏幕的高
        this.setLocation(screenWidth / 2 - windowWidth / 2, screenHeight / 2
                - windowHeight / 2);// 设置窗口居中显示

jTextField = new JTextField("localhost",12);
        jPasswordField = new JTextField(12);
        jLabel1 = new JLabel("服务器地址");
        jLabel2 = new JLabel("ZIP所在文件夹");
        jb1 = new JButton("确认");
        jb2 = new JButton("取消");
        imbtn = new JButton("浏览");

jtable = new JTable();
        mod= new CustomModel();

// 设置布局
        GridBagLayout layout = new GridBagLayout();
        this.setLayout(layout);

jp1 = new JPanel();
        jp2 = new JPanel();
        jp4 = new JPanel();

// 设置布局
        
        jTextField.addMouseListener(new MouseAdapter() {
              public void mouseClicked(java.awt.event.MouseEvent e) {
                  if(e.getClickCount()==2){
                      jTextField.setText("");
                  }
              };
        }  );

jp1.add(jLabel1);
        jp1.add(jTextField);// 第一块面板添加用户名和文本框

jp2.add(jLabel2);
        jp2.add(jPasswordField);// 第二块面板添加密码和密码输入框

// 对按钮添加事件
        imbtn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ImportButton_actionPerformed(e);
                // 将list中的数据转变为二维数组

for (int i = 0; i < columnTitle.length; i++) {
                    mod.addColumn(columnTitle[i]);
                }
                for (int i = 0; i < list.size(); i++) {
                     Column216 column216 = list.get(i);
                     Vector vector=new Vector();
                     vector.add(column216.getFlag());
                     vector.add(column216.getFileName());
                     vector.add(column216.getCreate_time());
                     vector.add(column216.getLastModified_time());
                    mod.addRow(vector);
                }
                jtable.setModel(mod);
                jtable.repaint();
                jtable.updateUI();
            }
        });

jb1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ConfirmButton_actionPerformed(e);
            }
        });
        jb2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                CancelButton_actionPerformed(e);
            }
        });

jp2.add(imbtn);// 第二块面板添加密码和密码输入框
        jp3 = new JScrollPane(jtable);

jp4.add(jb1);
        jp4.add(jb2); // 第四块面板添加确认和取消

// 进行布局管理
        GridBagConstraints s = new GridBagConstraints();// 定义一个GridBagConstraints,
        // 是用来控制添加进的组件的显示位置
        s.fill = GridBagConstraints.BOTH;
        // 该方法是为了设置如果组件所在的区域比组件本身要大时的显示情况
        // NONE:不调整组件大小。
        // HORIZONTAL:加宽组件,使它在水平方向上填满其显示区域,但是不改变高度。
        // VERTICAL:加高组件,使它在垂直方向上填满其显示区域,但是不改变宽度。
        // BOTH:使组件完全填满其显示区域。
        s.gridx = 0;
        s.gridy = 0;
        s.gridwidth = 1;// 该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.gridheight = 1;
        s.weightx = 1;// 该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty = 0;// 该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(jp1, s);// 设置组件
        this.add(jp1);

s.gridx = 0;// 组件的横向坐标
        s.gridy = 1;
        s.gridwidth = 1;// 该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.gridheight = 1;
        s.weightx = 1;// 该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty = 0;// 该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(jp2, s);// 设置组件
        this.add(jp2);

s.gridx = 0;
        s.gridy = 3;
        s.gridwidth = 1;// 该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.gridheight = 1;
        s.weightx = 1;// 该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty = 2;// 该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(jp3, s);// 设置组件
        this.add(jp3); // 将三块面板添加到登陆框上面

s.gridx = 0;
        s.gridy = 4;
        s.gridwidth = 1;// 该方法是设置组件水平所占用的格子数,如果为0,就说明该组件是该行的最后一个
        s.gridheight = 1;
        s.weightx = 1;// 该方法设置组件水平的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        s.weighty = 0;// 该方法设置组件垂直的拉伸幅度,如果为0就说明不拉伸,不为0就随着窗口增大进行拉伸,0到1之间
        layout.setConstraints(jp4, s);// 设置组件
        this.add(jp4);

// 设置显示
        this.setSize(700, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setTitle("216手动调用窗口");
    }

void ImportButton_actionPerformed(ActionEvent e) {
        try {
            JFileChooser chooser = new JFileChooser();
            chooser.setCurrentDirectory(new File("c:/"));
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY );
            int state = chooser.showOpenDialog(this);
            if (chooser.getSelectedFile().getPath() != null) {
                // 选中文件夹后,则来到此界面
                jPasswordField.setText(chooser.getSelectedFile().getPath());
                // 查看此文件夹下的所有文件,将文件名,创建时间,最后修改时间赋值到二维数组中
                readfile(chooser.getSelectedFile().getPath());
            }
        } catch (Exception exdia) {
        }
    }

void CancelButton_actionPerformed(ActionEvent e) {
        this.dispose();
    }

void ConfirmButton_actionPerformed(ActionEvent e) {
        String ip = jTextField.getText();
        // 获取选中的行
        //遍历表格,找到第一行是true的列
        
        int rowCount = mod.getRowCount();
        for (int i = rowCount-1; i >=0; i--) {
            Boolean flag = (Boolean) mod.getValueAt(i, 0);
            if(flag){
                String String_filename = (String) mod.getValueAt(i, 1);
                System.out.println("文件名:"+String_filename+"  ip地址:"+ip);
                client_method(String_filename, ip);
                mod.removeRow(i);
            }
        }
        jtable.setModel(mod);
        jtable.repaint();
        jtable.updateUI();
        
    }

/**
     * 读取某个文件夹下的所有压缩文件
     */
    public String readfile(String filepath) throws Exception {
        try {
            File file = new File(filepath);
            if (!file.isDirectory()) {

} else if (file.isDirectory()) {
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File readfile = new File(filepath + "\\" + filelist[i]);
                    if (!readfile.isDirectory()) {
                        // 判断文件夹下面的文件是否是zip文件,是的话放入二维数组
                        if (readfile.getName().endsWith(".zip")
                                || readfile.getName().endsWith(".ZIP")
                                || readfile.getName().endsWith(".rar")) {
                            long lastModified = readfile.lastModified();// 最后修改时间
                            String lastModified_time = new SimpleDateFormat(
                                    "yyyy/MM/dd  hh:mm:dd").format(new Date(
                                    lastModified));

String path = readfile.getPath();
                            String replace = path.replace(" ", "^ ");
                            String replace1 = replace.replace("(", "^(");
                            String replace2 = replace1.replace(")", "^)");
                            
                            
                            // 获取文件的创建时间

//备注方法适用于jdk1.7

          /**String path = readfile.getPath();
                            Path path111=Paths.get(path);  
                            BasicFileAttributeView basicview=Files.getFileAttributeView(path111, BasicFileAttributeView.class,LinkOption.NOFOLLOW_LINKS );
                            BasicFileAttributes attr =  basicview.readAttributes();
                            Date createDate = new Date(attr.creationTime().toMillis());//
                            System.out.println(createDate);
                            String create_time = new SimpleDateFormat(
                                    "yyyy/MM/dd  hh:mm:dd").format(createDate);*/

Process p = Runtime.getRuntime()
                                    .exec("cmd /C dir " + replace2
                                            + " /tc");
                            InputStream is = p.getInputStream();
                            BufferedReader br = new BufferedReader(
                                    new InputStreamReader(is));
                            String str;
                            int j = 0;
                            String create_time = null;
                            while ((str = br.readLine()) != null) {
                                j++;
                                if (j == 6) {
                                    if("".equals(str)){
                                        create_time = null;
                                    }else{
                                        create_time = str.substring(0, 17);
                                    }
                                }
                            }
                            // 获取文件名称
                            String fileName = readfile.getName();
                            Column216 arr = new Column216();
                            arr.setFlag(new Boolean(false));
                            arr.setFileName(fileName);
                            arr.setCreate_time(create_time);
                            arr.setLastModified_time(lastModified_time);
                            
                            list.add(arr);
                        }

} else if (readfile.isDirectory()) {
                        // 获取所有子文件的zip文件
                        readfile(filepath + "\\" + filelist[i]);
                    }
                }
            }

} catch (Exception e) {
            System.out.println("readfile()   Exception:" + e.getMessage());
        }
        return "sucess";
    }

class CustomModel extends DefaultTableModel {

/**
         * 每次勾选的时候,无论是选中还是去掉勾选,都会使用此方法,row是行数,从0开始
         */
        public boolean isCellEditable(int row, int column) {
            // 首先将行数放到set中 ,如果set中有这个行数,则代表二次勾选,将行数从set中拿掉.最终set中是勾选的行数的索引
            /*if (set.contains(row)) {
                set.remove(row);
            } else {
                set.add(row);
            }*/
            if (column > 0) {
                return false;
            } else {
                return true;
            }
        }

public Class getColumnClass(int c) {
            if(c == 0)
                   return Boolean.class;
               else
                return Object.class;
        }
    }

private void client_method(String filename,String ip) {
        // 工作中,将此注释部分打开即可
        String lantai_wsdl_url = "http://"+ip+":4931/soa?wsdl";// 服务地址,将用户输入的服务器IP地址替换localhost
        String lantai_namespace_url = "http://server.integration.sf.tji.com/";
        String lantai_service_name = "ImplPDMService";

try {
            URL wsdlURL = new URL(lantai_wsdl_url);

// 可以从wsdl的wsdl:definitions的targetNamespace查到第一个参数 //
            // 从wsdl:service的name查到第二个参数ImplUserServiceService

QName SERVICE_NAME = new QName(lantai_namespace_url,
                    lantai_service_name);
            // use Service.create to create Service instances Service service =
            Service service = Service.create(wsdlURL, SERVICE_NAME);

Pdm port = service.getPort(Pdm.class);

String pdmToVm = port.pdmToVm(filename);// 文件名

if("0".equals(pdmToVm)){
                JOptionPane.showMessageDialog(this, filename+"传输成功!");
            }else{
                JOptionPane.showMessageDialog(this, filename+"传输失败!"+pdmToVm);
            }
            System.out.println(pdmToVm);

} catch (Exception e) {
            JOptionPane.showMessageDialog(this, filename+"传输失败!"+e.getMessage());
            e.printStackTrace();
        }

}

public static void main(String[] args) {
        new denglu();
    }
}

GridBagLayout使用案例+获取目录下所有的文件+获取创建时间及最后修改时间的更多相关文章

  1. treeList获取目录下的所有文件

    /// <summary>/// treeList获取目录下的所有文件/// </summary>public static void InitTreeListGetFiles ...

  2. TreeView获取目录下的所有文件

    /// <summary> /// TreeView获取目录下的所有文件 /// </summary> /// <param name="tree"& ...

  3. 33.1 File 获取目录下的所有文件及子目录

    重要获取功能 String[] list() 返回当前路径下所有的文件和文件夹名称 //注意:只有指向文件夹的File对象才可以调用该方法(指向文件的file对象使用list会报错npe) File[ ...

  4. 【python】获取目录下的最新文件夹/文件

    直接上代码 def new_report(test_report): lists = os.listdir(test_report) #列出目录的下所有文件和文件夹保存到lists print(lis ...

  5. shell获取目录下最新的文件,文件是以日期命名

    如果你为每个文件按日期命名的格式都一致的话,那么 "ls -l" 命令列出的文件列表就是默认按文件名称(日期先后)排序的.那么最后一个就是最新的,文件名可以用以下方式获取.file ...

  6. Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例

    1. 需求:输出指定目录下的所以.java结尾文件的绝对路径的案例:  分析:  A:封装目录  B:获取该目录下的所有文件和文件夹的File数组  C:遍历这个File数组,得到每一个File对象的 ...

  7. c# 获取指定目录下的所有文件并显示在网页上

    参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...

  8. 取CPU序列号,获取网卡,取硬盘系列号,获取目录下的文件,强制删除目录

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  9. Java中获取本地某一个目录下的所有文件和文件夹

    在从事web开发工作中,经常需要对本地某一个目录下的文件进行处理,而在这之前,我们需要做的就是获取到这个目录下的文件. String filepath = "D:\file";// ...

随机推荐

  1. 洛谷P3807 【模板】卢卡斯定理_组合数学模板

    Code: #include<cstdio> using namespace std; typedef long long LL; const int maxn=1000000+2; LL ...

  2. mmap,malloc分配随机内存

    随机数1G #cat malloc_rand_1g.c #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h ...

  3. Bash 如何取得当前正在执行的脚本的绝对路径?

    转自:http://blogread.cn/it/article/6549?f=wb Bash 如何取得当前正在执行的脚本的绝对路径? 如题,一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无 ...

  4. php设置cookie和删除cookie

    设置cookie Example : - set - <?php setcookie( "name", "value", "future_tim ...

  5. mybatis 批量导入数据到mysql返回批量Id

    1.首先mybatis版本必需是3.3.1或以上 2.mapper配置文件中 <insert id="insertOrderBatch" parameterType=&quo ...

  6. C#中的Socket

    ];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组 IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);//本机预使用 ...

  7. BA-siemens-apogee自适应控制

    简介 APOGEE楼控系统的控制器中,包括了由 Cybosoft开发的基于无模型自适应控制技术的自适应控制. 自适应控制是一个复杂的闭环循环控制算 法.自适应控制能自动校正参数以补偿机械的系 统/负载 ...

  8. HDU 5171

    这道题本来很水,以前做过一样的,斐波那契数列,用矩阵快速幂的方法求,本来很水,以前做过很多次,为毛做的时候没想到T_T #include <iostream> #include <c ...

  9. PHP--规范化的文件上传

    <form action="" method="post" enctype="multipart/form-data"> < ...

  10. audio_coding模块分析和audio_conference_mixer模块分析

    audio_coding 1. 主要接口      AudioCodingModuleImpl::RegisterReceiveCodec 初始化Codec      AudioCodingModul ...