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日

最近浏览