⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connectbuttonlistener.java

📁 具有Ftp的基本功能
💻 JAVA
字号:
package Listener;

import java.awt.Dimension;
import java.awt.event.*;

import javax.swing.*;

import FtpLocalSource.LocalSourcePanelClass;
import GUI.*;

import com.jcat.ftp.*;
import com.jcat.ftp.event.*;
import com.jcat.ftp.table.*;
/**
 * 用于连接站点的按钮事件监听
 * @author 赖程远
 *
 */
public class ConnectButtonListener implements ActionListener
{
	private MyPanel					panel;
	private JTabbedPane				rightTabbedPane;
	private JTabbedPane				downTabbedPane;
	private LocalSourcePanelClass	localSourcePanel;
	/**
	 * 构造函数
	 * @param panel 用于获取FTP连接所需信息
	 * @param localSourcePanel 用于显示本地目录
	 * @param rightTabbedPane 用于显示远程FTP目录
	 * @param downTabbedPane 用于显示下载列表
	 */
	public ConnectButtonListener(MyPanel panel,
			LocalSourcePanelClass localSourcePanel,
			JTabbedPane rightTabbedPane, JTabbedPane downTabbedPane)
	{
		this.panel = panel;
		this.localSourcePanel = localSourcePanel;
		this.rightTabbedPane = rightTabbedPane;
		this.downTabbedPane = downTabbedPane;
	}
	
	@Override
	public void actionPerformed(ActionEvent arg0)
	{
		if(panel.getHost().equals(""))
		{
			JOptionPane.showMessageDialog(null, "输入站点信息有误!");
			return;
		}
		int i = rightTabbedPane.indexOfTab(panel.getHost());
		if (i <= -1)
		{
			final FTPConnection conn = new FTPConnection();
			final RemoteFilePanel pane = new RemoteFilePanel(conn,
					localSourcePanel);
			TaskTable task = new TaskTable(conn.getTaskQueue());
			
			rightTabbedPane.addTab(panel.getHost(), pane);
			JLabel label = new JLabel(panel.getHost());
			rightTabbedPane.setTabComponentAt(
					rightTabbedPane.getTabCount() - 1, label);
			rightTabbedPane.setSelectedComponent(pane);
			label.addMouseListener(new DisconnectListener(rightTabbedPane,
					downTabbedPane));
			
			downTabbedPane.setPreferredSize(new Dimension(300, 150));
			label = new JLabel(panel.getHost() + "任务队列");
			JScrollPane s=new JScrollPane(task);
			downTabbedPane.addTab(panel.getHost(), s);
			downTabbedPane.setTabComponentAt(downTabbedPane.getTabCount() - 1,
					label);
			downTabbedPane.setSelectedComponent(s);
			task.setUpdate(true);
			
			final JTextArea textArea = ((RemoteFilePanel) rightTabbedPane
					.getSelectedComponent()).getTextArea();
			
			conn.setHost(panel.getHost());
			textArea.append(panel.getHost() + "\n");
			conn.setUser(panel.getUser());
			conn.setPassword(panel.getPassword());
			conn.setPort(panel.getPort());
			conn.getMessageQueue().addMessageListener(new MessageListener()
			{
				
				@Override
				public void messageAdded(MessageEvent e)
				{
					MessageReader r = (MessageReader) e.getSource();
					textArea.append(r.readMessage() + "\n");
					textArea.setCaretPosition(textArea.getText().length());
				}
				
			});
			Thread thread = new Thread(new Runnable()
			{
				
				@Override
				public void run()
				{
					conn.connect();
					if (conn.isConnected())
					{
						conn.login();
					}
					if (conn.loggedin())
					{
						conn.printWorkingDirectory();
						FTPFile[] f = conn.listRemoteFiles();
						pane.getTable().showFTPFile(f);
					}
					
				}
				
			});
			thread.start();
			
		} else
		{
			rightTabbedPane.setSelectedIndex(i);
		}
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -