import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
import java.net.*;
import java.lang.reflect.*;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.DefaultListModel;
import javax.swing.JTree;
import javax.swing.border.TitledBorder;
//ftp client class
import sun.net.*;
import sun.net.ftp.*;
public class FtpSession extends JFrame implements ActionListener
{
private JTextField txtHost = new JTextField(10);
private JTextField txtPort = new JTextField(10);
private JTextField txtUser = new JTextField(10);
private JPasswordField txtPass = new JPasswordField(10);
private JTextField txtFile = new JTextField(20);
private JPanel FtpClientFrame1 = new JPanel(new GridLayout(4,2));
private JPanel FtpClientFrame2 = new JPanel(new GridLayout(2,1));
private JPanel FtpClientFrame3 = new JPanel(new GridLayout(6,1,0,4));
private JPanel FtpClientFrame4 = new JPanel(new BorderLayout());
private JPanel FtpClientFrameS = new JPanel(new FlowLayout(FlowLayout.LEFT));
private JPanel FtpClientFrame5 = new JPanel(new BorderLayout());
private JPanel FtpClientFrame6 = new JPanel(new BorderLayout());
private JLabel hostLabel = new JLabel("Host");
private JLabel portLabel = new JLabel("Port");
private JLabel loginLabel = new JLabel("Login");
private JLabel passLabel = new JLabel("Pass");
private JButton btn_Connect = new JButton("Connect");
private JButton btn_List = new JButton("list");
private JButton btn_Download = new JButton("down");
private JButton btn_Upload = new JButton("up");
private JButton btn_Type = new JButton("ACSII");
private JButton btn_Select = new JButton("Select");
private JButton btn_CD = new JButton("CD");
private JButton btn_Exit = new JButton("Exit");
//连接状态
private JLabel lblStatus = new JLabel("Status:");
// DefaultListModel lstRemote = new DefaultListModel();
private JList remoteList = new JList();
//...
boolean isConnect;
protected sun.net.ftp.FtpClient ftpclient;
protected String m_stxtFile;
protected String m_sHostFile;
private String host,port,user,pass;
//Construct the frame
public FtpSession(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{
createFrame();
isConnect = false;
setComponent();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void createFrame() throws Exception
{
// private JPanel FtpClientFrameOne = new JPanel(new FlowLayout(FlowLayout.LEFT));
// private JPanel FtpClientFrameTwo = new JPanel(new GridLayout(1, 8));
// private JPanel FtpClientFrameThree = new JPanel(new GridLayout(2, 1));
// private JPanel FtpClientFrameFour = new JPanel(new GridLayout(1, 2));
//连接、断开按钮
//用户登录
//本地、远程窗口
// DefaultListModel modelList = new DefaultListModel();
// private JList localList = new JList();
// String[] str={"hell","world"};
// JScrollPane localScrollPane = new JScrollPane(localList);
//本地、远程目录树
// private JTree localTree;
// private JTree ServerTree;
TitledBorder title = new TitledBorder("FTP seting");
FtpClientFrame1.setSize(200,300);
FtpClientFrame1.setBorder(title);
FtpClientFrame1.add(hostLabel);
FtpClientFrame1.add(txtHost);
FtpClientFrame1.add(portLabel);
FtpClientFrame1.add(txtPort);
FtpClientFrame1.add(loginLabel);
FtpClientFrame1.add(txtUser);
FtpClientFrame1.add(passLabel);
FtpClientFrame1.add(txtPass);
FtpClientFrame2.setBorder(new TitledBorder("Local"));
FtpClientFrame2.add(txtFile);
FtpClientFrame2.add(btn_Select);
FtpClientFrame3.add(btn_Connect);
FtpClientFrame3.add(btn_List);
FtpClientFrame3.add(btn_Download);
FtpClientFrame3.add(btn_Upload);
FtpClientFrame3.add(btn_Type);
FtpClientFrame3.add(btn_Exit);
FtpClientFrame4.setBorder(new TitledBorder("Remote"));
FtpClientFrame4.add(BorderLayout.NORTH,remoteList);
FtpClientFrame4.add(BorderLayout.CENTER,btn_CD);
FtpClientFrameS.add(lblStatus);
FtpClientFrame6.add(FtpClientFrame1,"North");
FtpClientFrame6.add(FtpClientFrame2,"Center");
FtpClientFrame5.add(FtpClientFrame6,"West");
FtpClientFrame5.add(FtpClientFrame3,"Center");
FtpClientFrame5.add(FtpClientFrame4,"East");
FtpClientFrame5.add(FtpClientFrameS,"South");
setContentPane(FtpClientFrame5);
setTitle("Ftp客户端");
// setSize(600, 250);
pack();
//setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
btn_Connect.addActionListener(this);
btn_Select.addActionListener(this);
btn_List.addActionListener(this);
btn_Download.addActionListener(this);
btn_Upload.addActionListener(this);
btn_Type.addActionListener(this);
// btn_Select.addActionListener(this);
btn_CD.addActionListener(this);
btn_Exit.addActionListener(this);
}
public void jMenuFileExit_actionPerformed(ActionEvent e){
disconnect();
System.exit(0);
}
protected void processWindowEvent(WindowEvent e){
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING){
jMenuFileExit_actionPerformed(null);
}
}
void btn_Select_actionPerformed(ActionEvent e)
{
JFileChooser jFileChooser1 = new JFileChooser();
jFileChooser1.setCurrentDirectory(new File("."));
jFileChooser1.setDialogType(JFileChooser.OPEN_DIALOG);
jFileChooser1.setDialogTitle("Select Local Path");
if ((jFileChooser1.showOpenDialog(this) != JFileChooser.APPROVE_OPTION))
return;
String fileName = jFileChooser1.getSelectedFile().getAbsolutePath();
txtFile.setText(fileName);
repaint();
}
void btn_Connect_actionPerformed(ActionEvent e)
{
if (!isConnect)
{
isConnect = connect();
setComponent();
}
else
{
disconnect();
isConnect = false;
setComponent();
}
}
void btn_List_actionPerformed(ActionEvent e)
{
Thread thread = new Thread(){public void run(){listFTPFile();}};
thread.start();
}
void btn_Download_actionPerformed(ActionEvent e)
{
Thread thread = new Thread(){public void run(){download();}};
thread.start();
}
void btn_Upload_actionPerformed(ActionEvent e)
{
Thread thread = new Thread(){public void run(){upload();}};
thread.start();
}
void btn_CD_actionPerformed(ActionEvent e)
{
Thread thread = new Thread(){public void run(){changeDirectory();}};
thread.start();
}
void btn_Type_actionPerformed(ActionEvent e)
{
Thread thread = new Thread(){public void run(){setType();}};
thread.start();
}
public void actionPerformed(ActionEvent e)
{
String jj;
jj = ((JButton)e.getSource()).getText();
if(jj.equals("Select"))
btn_Select_actionPerformed(e);
else if(jj.equals("Connect"))
btn_Connect_actionPerformed(e);
else if(jj.equals("list"))
btn_List_actionPerformed(e);
else if(jj.equals("down"))
btn_Download_actionPerformed(e);
else if(jj.equals("up"))
btn_Upload_actionPerformed(e);
else if(jj.equals("CD"))
btn_CD_actionPerformed(e);
else if (jj.equals("ACSII"))
btn_Type_actionPerformed(e);
else if (jj.equals("Exit"))
jMenuFileExit_actionPerformed(e);
}
protected void setComponent()
{
if (is