package com.hz.weep; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Panel; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JTextField; /** * 一个简单的ui,用来进行文件合并 可以把一个压缩包和图片合成一个文件 拓展名打开方式为图片拓展名则打开为图片 拓展名为压缩文件拓展名则打开为压缩文件. * * @author weep * */ public class MyMergeFileMachine extends DropTargetAdapter { public JFrame jframe; public JList jlist; public DefaultListModel dlm; public JTextField text; /** * 创建程序主界面,基本的布局和按钮监听. */ public MyMergeFileMachine() { jframe = new JFrame("文件合并工具-百度[世态炎凉一依然]吧"); dlm = new DefaultListModel(); jlist = new JList(dlm); jlist.setDropTarget(new DropTarget(jlist, DnDConstants.ACTION_REFERENCE, this, true)); jframe.add(jlist); Panel panel = new Panel(); panel.setBounds(0, 0, 200, 30); panel.setBackground(Color.white); text = new JTextField(); text.setBounds(0, 200, 200, 20); text.setText("d:\\默认合成文件.jpg"); JButton submit = new JButton("合并"); JButton upMove = new JButton("上移"); JButton delete = new JButton("删除"); JButton close = new JButton("关闭"); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Integer index = jlist.getAnchorSelectionIndex(); if (index != null && index >= 0 && jlist.getModel().getSize() > 1) { dlm.remove(index); } else if (index == 0 && jlist.getModel().getSize() == 1) { dlm.removeAllElements(); } } }); upMove.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Integer index = jlist.getAnchorSelectionIndex(); if (index > 0) { Object temp1 = dlm.get(index - 1); dlm.remove(index - 1); dlm.add(index, temp1); } } }); submit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { List<String> list = new ArrayList<String>(); for (int i = 0; i < dlm.size(); i++) { list.add(dlm.getElementAt(i).toString()); } try { if (list.size() != 0) { addFile(list, text.getText()); } else { JOptionPane.showMessageDialog(jframe, "请添加文件"); } } catch (Exception e1) { e1.printStackTrace(); System.err.println("擦 了 异常了!"); } } }); panel.add(submit); panel.add(upMove); panel.add(delete); panel.add(close); jframe.add(text, BorderLayout.BEFORE_FIRST_LINE); jframe.add(panel, "South"); jframe.setSize(350, 300); jframe.setLocationRelativeTo(null); jframe.setAlwaysOnTop(true); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setVisible(true); } /** * 继承DropTargetAdapter抽象类,实现拖拽功能. */ @SuppressWarnings("unchecked") public void drop(DropTargetDropEvent dtde) { dtde.acceptDrop(DnDConstants.ACTION_REFERENCE); Transferable tf = dtde.getTransferable(); try { List<File> list = (List<File>) tf .getTransferData(DataFlavor.javaFileListFlavor); for (File f : list) { dlm.addElement(f); } } catch (Exception e) { e.printStackTrace(); } } /** * 像列表中添加新row. * @param file * @param target * @throws Exception */ public void addFile(List<String> file, String target) throws Exception { String message = ""; String files = ""; for (String s : file) { files += " " + s + " +"; } files = files.substring(0, files.length() - 2); System.out.println(files); // 核心代码,利用windows的copy命令进行文件合并 Process p = Runtime.getRuntime().exec( "cmd /c copy /b " + files + " " + target); BufferedReader pw = new BufferedReader(new InputStreamReader( p.getInputStream())); String str = ""; int i = 0; while ((str = pw.readLine()) != null) { i++; if (i > 1) { System.out.println(str.substring(12)); } else { System.out.println(str); } } JOptionPane.showMessageDialog(jframe, "位置:" + target); } /** * 运行主程序 * @param args */ public static void main(String[] args) { new MyMergeFileMachine(); } }
最近下载更多
pr_pengrui LV1
2019年9月11日
飞翔的企鹅嗯嗯 LV11
2019年1月30日
zq1212123123 LV1
2018年4月18日
ybbghdiu LV27
2015年7月23日
mr.kang LV25
2014年8月4日
Tonfay LV26
2013年6月28日
是非黑白 LV8
2012年9月24日
春暖花开 LV8
2012年9月7日
最代码官方 LV168
2012年9月7日