/** Main.java
*
* Created on 2007年11月8日, 上午9:15*/packagetest1;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.Transferable;importjava.awt.datatransfer.UnsupportedFlavorException;importjava.awt.dnd.DnDConstants;importjava.awt.dnd.DropTarget;importjava.awt.dnd.DropTargetDragEvent;importjava.awt.dnd.DropTargetDropEvent;importjava.awt.dnd.DropTargetEvent;importjava.awt.dnd.DropTargetListener;importjava.io.File;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.JFileChooser;importjavax.swing.UIManager;/***
*@authorhadeslee*/publicclassMainextendsjavax.swing.JFrameimplementsDropTargetListener {privateJFileChooser jfc;privateFile toMd5;privateDropTarget dt;/**Creates new form Main*/publicMain() {try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception exe) {
exe.printStackTrace();
}
initComponents();
initOther();this.setLocationRelativeTo(null);
}privatevoidinitOther() {
dt=newDropTarget(jTextArea1, DnDConstants.ACTION_COPY_OR_MOVE,this);
}/**This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.*///privatevoidinitComponents() {
jLabel1=newjavax.swing.JLabel();
jTextField1=newjavax.swing.JTextField();
jButton1=newjavax.swing.JButton();
jScrollPane1=newjavax.swing.JScrollPane();
jTextArea1=newjavax.swing.JTextArea();
jButton2=newjavax.swing.JButton();
jButton3=newjavax.swing.JButton();
jpb=newjavax.swing.JProgressBar();
jLabel2=newjavax.swing.JLabel();
jTextField2=newjavax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("MD5生成");
setResizable(false);
jLabel1.setText("文件路径:");
jTextField1.setEditable(false);
jButton1.setText("浏览
");
jButton1.addActionListener(newjava.awt.event.ActionListener() {publicvoidactionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jScrollPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("文件信息"));
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton2.setText("生成");
jButton2.addActionListener(newjava.awt.event.ActionListener() {publicvoidactionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("退出");
jButton3.addActionListener(newjava.awt.event.ActionListener() {publicvoidactionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jLabel2.setText("MD5值:");
jTextField2.setEditable(false);
javax.swing.GroupLayout layout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jpb, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2))
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE,246, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1)))
.addContainerGap(16, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,182, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,11, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jButton3)
.addComponent(jpb, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(267,267,267)
.addComponent(jButton2)
.addGap(10,10,10))
);
pack();
}//privatevoidjButton1ActionPerformed(java.awt.event.ActionEvent evt) {//TODO add your handling code here:if(jfc==null) {
jfc=newJFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
}if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION) {
toMd5=jfc.getSelectedFile();
jTextField1.setText(toMd5.toString());
showFileInfo();
}
}privatevoidjButton2ActionPerformed(java.awt.event.ActionEvent evt) {//TODO add your handling code here:jButton2.setEnabled(false);newThread(){publicvoidrun(){
String s=Util.getMD5(toMd5, jpb);
jTextField2.setText(s);
jButton2.setEnabled(true);
}
}.start();
}privatevoidjButton3ActionPerformed(java.awt.event.ActionEvent evt) {//TODO add your handling code here:System.exit(0);
}privatevoidshowFileInfo() {if(toMd5!=null) {
SimpleDateFormat sdf=newSimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
File f=toMd5;
StringBuilder sb=newStringBuilder();
sb.append("文件名称:").append(f.getName()).append('\n');
sb.append("文件大小:").append(f.length()).append('\n');
sb.append("文件最后修改日期:").append(sdf.format(newDate(f.lastModified()))).append("\n");
sb.append("文件属性:").append(f.canWrite()?"读写":"只读").append('\n');
jTextArea1.setText(sb.toString());
}
}/***@paramargs the command line arguments*/publicstaticvoidmain(String args[]) {
java.awt.EventQueue.invokeLater(newRunnable() {publicvoidrun() {newMain().setVisible(true);
}
});
}//Variables declaration - do not modifyprivatejavax.swing.JButton jButton1;privatejavax.swing.JButton jButton2;privatejavax.swing.JButton jButton3;privatejavax.swing.JLabel jLabel1;privatejavax.swing.JLabel jLabel2;privatejavax.swing.JScrollPane jScrollPane1;privatejavax.swing.JTextArea jTextArea1;privatejavax.swing.JTextField jTextField1;privatejavax.swing.JTextField jTextField2;privatejavax.swing.JProgressBar jpb;//End of variables declarationpublicvoiddragEnter(DropTargetDragEvent dtde) {
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
}publicvoiddragOver(DropTargetDragEvent dtde) {
}publicvoiddropActionChanged(DropTargetDragEvent dtde) {
}publicvoiddragExit(DropTargetEvent dte) {
}publicvoiddrop(DropTargetDropEvent e) {try{if(e.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
Transferable tr=e.getTransferable();
e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
@SuppressWarnings("unchecked")
java.util.Listlist=(java.util.List) tr.getTransferData(DataFlavor.javaFileListFlavor);if(list.size()==1) {
File f=list.get(0);if(f.isFile()) {
toMd5=list.get(0);this.showFileInfo();
jTextField1.setText(toMd5.toString());
}
}
e.dropComplete(true);
}else{
e.rejectDrop();
}
}catch( IOException io) {
io.printStackTrace();
e.rejectDrop();
}catch( UnsupportedFlavorException ufe) {
ufe.printStackTrace();
e.rejectDrop();
}
}
}