package wenjianchuanshu;
import java.awt.Container;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import javax.swing.*;
public class MainFrame extends JFrame implements DropTargetListener{
private JLabel ipLabel;
private JTextField ipTextField;
private JLabel portLabel;
private JTextField portTextField;
private JButton sendButton;
private JLabel pathLabel;
private JTextField filePath;
private JButton viewButton;
private String path;
private String file;
JMenuBar menuBar;
JMenu filemenu,helpmenu;
JMenuItem f_setting,f_exit,h_about;
Server serverThread;
public MainFrame(){
setTitle("文件传输系统");
DropTarget dt;
Container c = getContentPane();
c.setLayout(null);
menuBar = new JMenuBar();
filemenu = new JMenu("File");
f_setting = new JMenuItem("Setting");
f_exit = new JMenuItem("Exit");
menuBar.add(filemenu);
filemenu.add(f_setting);
filemenu.add(f_exit);
helpmenu = new JMenu("Help");
h_about = new JMenuItem("About");
menuBar.add(helpmenu);
helpmenu.add(h_about);
setJMenuBar(menuBar);
ipLabel = new JLabel("IP:");
ipLabel.setBounds(20, 13, 20, 20);
ipTextField = new JTextField("222.204.55.74",9);
ipTextField.setBounds(41, 10, 100, 25);
portLabel = new JLabel("Port:");
portLabel.setBounds(155, 13, 35, 20);
portTextField = new JTextField("5920",4);
portTextField.setBounds(186, 10, 39, 25);
sendButton = new JButton("Send");
sendButton.setBounds(230, 7, 65, 30);
pathLabel = new JLabel("Path:");
pathLabel.setBounds(20, 48, 35, 25);
filePath = new JTextField(15);
filePath.setBounds(55, 48, 170, 25);
viewButton = new JButton("View");
viewButton.setBounds(230, 45, 65, 30);
c.add(ipLabel,null);
c.add(ipTextField,null);
c.add(portLabel,null);
c.add(portTextField,null);
c.add(sendButton,null);
c.add(pathLabel,null);
c.add(filePath,null);
c.add(viewButton,null);
dt = new DropTarget(filePath,this);
serverThread = new Server();
serverThread.start();
sendButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(check()){
Thread sendfile = new Thread(new SendFile(ipTextField.getText(),
portTextField.getText(),
path,
file));
sendfile.start();
}
}
});
viewButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
getFilePath();
}
});
f_setting.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JLabel serverIP,serverPort;
JTextField IPField;
final JTextField PortField;
JButton button;
final JDialog set = new JDialog();
set.setTitle("Setting");
Container c = set.getContentPane();
c.setLayout(null);
serverIP = new JLabel("Server IP:");
serverIP.setBounds(10, 10, 80, 20);
IPField = new JTextField();
IPField.setEditable(false);
IPField.setBounds(81, 10, 140, 22);
serverPort = new JLabel("Server Port:");
serverPort.setBounds(10, 35, 80, 20);
PortField = new JTextField("5920");
PortField.setBounds(81, 35, 140, 22);
button = new JButton("OK");
button.setBounds(95, 60, 55, 28);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
set.setVisible(false);
serverThread.stop();
serverThread.CloseSocket();
serverThread = new Server(Integer.valueOf(PortField.getText()).intValue());
serverThread.start();
}
});
c.add(serverIP);
c.add(serverPort);
c.add(IPField);
c.add(PortField);
c.add(button);
set.setBounds(361,321,240,125);
set.setVisible(true);
}
});
f_exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
h_about.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
about a = new about();
}
});
setBounds(304,274,320,150);
setVisible(true);
}
public boolean check(){
String datePattern = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
String portPattern = "\\d{1,5}";
if(ipTextField.getText().equals("")){
JOptionPane.showMessageDialog(this, "请输入IP!", "Warning", JOptionPane.WARNING_MESSAGE);
return false;
}else if(!(ipTextField.getText().matches(datePattern))){
JOptionPane.showMessageDialog(this, "IP输入格式错误!", "Warning", JOptionPane.WARNING_MESSAGE);
return false;
}else if(portTextField.getText().equals("")){
JOptionPane.showMessageDialog(this, "请输入端口!", "Warning", JOptionPane.WARNING_MESSAGE);
return false;
}else if(!(portTextField.getText().matches(portPattern))){
JOptionPane.showMessageDialog(this, "端口输入格式错误!", "Warning", JOptionPane.WARNING_MESSAGE);
return false;
}else if(filePath.getText().equals("")){
JOptionPane.showMessageDialog(this, "请选择文件!", "Warning", JOptionPane.WARNING_MESSAGE);
return false;
}
return true;
}
public void getFilePath(){
JFileChooser fileChooser = new JFileChooser();
fileChooser.showOpenDialog(this);
fileChooser.setDragEnabled(true);
path = fileChooser.getSelectedFile().getAbsolutePath();
file = fileChooser.getSelectedFile().getName();
filePath.setText(path);
}
public static void main(String[] args){
MainFrame frame = new MainFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//以下代码实现拖放功能
@Override
public void drop(DropTargetDropEvent dtde){
// TODO Auto-generated method stub
Transferable tf = dtde.getTransferable();
DataFlavor[] flavor = tf.getTransferDataFlavors();
for(int i=0; i<flavor.length; i++){
if(flavor[i].isFlavorJavaFileListType()){
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
String fp = new String();
try {
fp = tf.getTransferData(flavor[i]).toString();
} catch (UnsupportedFlavorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuffer fpath = new StringBuffer();
fpath.append(fp);
fpath.deleteCharAt(0);
fpath.deleteCharAt(fpath.length()-1);
//System.out.println(fpath.toString());
filePath.setText(fpath.toString());
path = new String(fpath.toString());
String r = path.replace("\\", "\\\\");
String[] f = r.split("\\\\", 0);
file = f[f.length-1];
dtde.dropComplete(true);
}
}
}
@Override
public void dragEnter(DropTargetDragEvent dtde) {
// TODO Auto-generated method stub
//System.out.println("Enter...");
}
@Override
public void dragExit(DropTargetEvent dte) {
// TODO Auto-generated method stub
}
@Override
public void dragOver(DropTargetDragEvent dtde) {
// TODO Auto-generated method stub
}
@Override
public void dropActionChanged(DropTargetDragEvent dtde) {
// TODO Auto-generated method stub
}
}
/*panel = new JPanel();
ipLabel = new JLabel("IP:");
panel.add(ipLabel);
ipTextField = new JTextField("222.204.55.74",9);
panel.add(ipTextField);
portLabel = new JLabel("Port:");
panel.add(portLabel);
portTextField = new JTextField("5920",4);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
java文件传输程序.rar (29个子文件)
wenjianchuanshu
.project 391B
bin
wenjianchuanshu
AcceptThread.class 5KB
SendFile$1.class 760B
MainFrame$2.class 703B
setting.class 2KB
setting$1.class 698B
ProgressBarFrame.class 3KB
Server.class 1KB
AcceptThread$1.class 729B
MainFrame$3$1.class 1KB
MainFrame$5.class 752B
SendFile.class 5KB
MainFrame$1.class 1KB
MainFrame$3.class 2KB
MainFrame.class 7KB
ProgressBarFrame$1.class 737B
about.class 1KB
ProgressBarFrame$2.class 945B
MainFrame$4.class 722B
.settings
org.eclipse.jdt.core.prefs 629B
文件传输.jar 22KB
src
wenjianchuanshu
Server.java 845B
MainFrame.java 8KB
ProgressBarFrame.java 3KB
AcceptThread.java 4KB
SendFile.java 4KB
setting.java 1KB
about.java 673B
.classpath 301B
共 29 条
- 1
资源评论
- yyjjolin12012-06-22java文件传输在本程序中貌似学到的不多,还是有诸多不懂得地方。
- lalalallalal23342013-07-01虽然还有许多不懂的地方,但写的挺好的
- 听见荥麸2014-03-16可以运行,还不错
- qq_151551772014-12-29不错,有很多值得学习的地方!
- long90712012-07-09很简单的东西,也有可以学习的地方。
jinphen
- 粉丝: 1
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功