📄 connectbuttonlistener.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 + -