首先看一下该软件的整体代码框架

                   
  

1、首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格

  1. package com.oyp.ftp;
  2.  
  3. import java.util.logging.Level;
  4. import java.util.logging.Logger;
  5.  
  6. import javax.swing.UIManager;
  7.  
  8. import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
  9.  
  10. public class FTPMain {
  11. /**
  12. * 本应用的程序入口
  13. */
  14. public static void main(String args[]) {
  15. //导致 runnable 的 run 方法在 EventQueue 的指派线程上被调用。
  16. java.awt.EventQueue.invokeLater(new Runnable() {
  17. public void run() {
  18. try {
  19. //使用 LookAndFeel 对象设置当前的默认外观。
  20. UIManager.setLookAndFeel(new NimbusLookAndFeel());//设置一个非常漂亮的外观
  21. // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  22. FTPClientFrame client_Frame = new FTPClientFrame();
  23. client_Frame.setVisible(true);
  24. } catch (Exception ex) {
  25. Logger.getLogger(FTPClientFrame.class.getName()).log(
  26. Level.SEVERE, null, ex);
  27. }
  28. }
  29. });
  30. }
  31. }

2、介绍界面的主程序代码FTPClientFrame.java

  1. package com.oyp.ftp;
  2.  
  3. import java.awt.AWTException;
  4. import java.awt.MenuItem;
  5. import java.awt.PopupMenu;
  6. import java.awt.SystemTray;
  7. import java.awt.TrayIcon;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.WindowEvent;
  11.  
  12. import javax.swing.ImageIcon;
  13. import javax.swing.JButton;
  14. import javax.swing.JFrame;
  15. import javax.swing.JLabel;
  16. import javax.swing.JMenu;
  17. import javax.swing.JMenuBar;
  18. import javax.swing.JMenuItem;
  19. import javax.swing.JPanel;
  20. import javax.swing.JPasswordField;
  21. import javax.swing.JSeparator;
  22. import javax.swing.JSplitPane;
  23. import javax.swing.JTabbedPane;
  24. import javax.swing.JTextField;
  25. import javax.swing.JToggleButton;
  26. import javax.swing.JToolBar;
  27. import javax.swing.UIManager;
  28.  
  29. import com.oyp.ftp.panel.ftp.FtpPanel;
  30. import com.oyp.ftp.panel.local.LocalPanel;
  31. import com.oyp.ftp.panel.manager.FtpSiteDialog;
  32. import com.oyp.ftp.panel.queue.DownloadPanel;
  33. import com.oyp.ftp.panel.queue.QueuePanel;
  34. import com.oyp.ftp.panel.queue.UploadPanel;
  35. import com.oyp.ftp.utils.FtpClient;
  36. import com.oyp.ftp.utils.SiteInfoBean;
  37. import com.sun.java.swing.plaf.nimbus.*;
  38.  
  39. public class FTPClientFrame extends javax.swing.JFrame {
  40. FtpClient ftpClient;
  41. private JPasswordField PassField;
  42. private JButton cutLinkButton;
  43. FtpPanel ftpPanel;
  44. LocalPanel localPanel;
  45. private JTextField portTextField;
  46. private JTextField serverTextField;
  47. private JTextField userTextField;
  48. private QueuePanel queuePanel;
  49. private UploadPanel uploadPanel;
  50. private DownloadPanel downloadPanel;
  51. private JSplitPane jSplitPane1;
  52. private JButton linkButton;
  53. private final LinkToAction LINK_TO_ACTION; // 连接到 按钮的动作处理器
  54. private final CutLinkAction CUT_LINK_ACTION; // 断开 按钮的动作处理器
  55. private SystemTray systemTray;
  56. private JToggleButton shutdownButton;
  57. private final ImageIcon icon = new ImageIcon(getClass().getResource(
  58. "/com/oyp/ftp/res/trayIcon.png"));
  59.  
  60. public FTPClientFrame() {
  61. LINK_TO_ACTION = new LinkToAction(this, "连接到", null);
  62. CUT_LINK_ACTION = new CutLinkAction(this, "断开", null);
  63. initComponents();
  64. initSystemTray();
  65. }
  66.  
  67. /**
  68. * 初始化系统托盘的方法
  69. */
  70. private void initSystemTray() {
  71. if (SystemTray.isSupported())
  72. systemTray = SystemTray.getSystemTray();
  73. TrayIcon trayIcon = new TrayIcon(icon.getImage());
  74. PopupMenu popupMenu = new PopupMenu("托盘菜单");
  75.  
  76. // 创建显示主窗体菜单项
  77. MenuItem showMenuItem = new MenuItem("显示主窗体");
  78. showMenuItem.addActionListener(new ActionListener() {
  79. @Override
  80. public void actionPerformed(ActionEvent e) {
  81. FTPClientFrame.this.setExtendedState(JFrame.NORMAL);
  82. FTPClientFrame.this.setVisible(true);
  83. }
  84. });
  85.  
  86. // 创建退出菜单项
  87. MenuItem exitMenuItem = new MenuItem("退出");
  88. exitMenuItem.addActionListener(new ActionListener() {
  89. @Override
  90. public void actionPerformed(ActionEvent e) {
  91. System.exit(0);
  92. }
  93. });
  94.  
  95. popupMenu.add(showMenuItem);
  96. popupMenu.addSeparator();
  97. popupMenu.add(exitMenuItem);
  98. trayIcon.setPopupMenu(popupMenu);
  99. try {
  100. systemTray.add(trayIcon);
  101. } catch (AWTException e) {
  102. e.printStackTrace();
  103. }
  104. }
  105.  
  106. /**
  107. * 初始化程序界面的方法
  108. */
  109. private void initComponents() {
  110. setIconImage(icon.getImage());
  111. java.awt.GridBagConstraints gridBagConstraints;
  112.  
  113. JPanel jPanel1 = new JPanel();
  114. JToolBar jToolBar1 = new JToolBar();
  115. JButton linkTo = new JButton();
  116. cutLinkButton = new JButton();
  117. JPanel jPanel4 = new JPanel();
  118. JLabel jLabel1 = new JLabel();
  119. serverTextField = new JTextField();
  120. JLabel jLabel2 = new JLabel();
  121. userTextField = new JTextField();
  122. JLabel jLabel3 = new JLabel();
  123. PassField = new JPasswordField();
  124. JLabel jLabel6 = new JLabel();
  125. portTextField = new JTextField();
  126. linkButton = new JButton();
  127. JSplitPane jSplitPane2 = new JSplitPane();
  128. jSplitPane1 = new JSplitPane();
  129. ftpPanel = new FtpPanel(this); // 初始化FTP远程资源面板
  130. localPanel = new LocalPanel(this); // 初始化本地资源管理面板
  131. uploadPanel = new UploadPanel(); // 初始化上传队列面板
  132. downloadPanel = new DownloadPanel(); // 初始化下载队列面板
  133. queuePanel = new QueuePanel(this); // 初始化队列面板
  134.  
  135. JTabbedPane jTabbedPane1 = new JTabbedPane();
  136. JMenuBar MenuBar = new JMenuBar();
  137. JMenu fileMenu = new JMenu();
  138. JMenuItem ftpManageMenuItem = new JMenuItem();
  139. JSeparator jSeparator1 = new JSeparator();
  140. JMenuItem linkToMenuItem = new javax.swing.JMenuItem();
  141. JMenuItem cutMenuItem = new javax.swing.JMenuItem();
  142. JSeparator jSeparator2 = new javax.swing.JSeparator();
  143. JMenuItem exitMenuItem = new javax.swing.JMenuItem();
  144. JMenuItem uploadMenuItem = new javax.swing.JMenuItem();
  145. JSeparator jSeparator3 = new javax.swing.JSeparator();
  146. JMenuItem createFolderMenuItem = new javax.swing.JMenuItem();
  147. JMenuItem renameMenuItem = new javax.swing.JMenuItem();
  148. JMenuItem delMenuItem = new javax.swing.JMenuItem();
  149. JMenu ftpMenu = new javax.swing.JMenu();
  150. JMenuItem downMenuItem = new javax.swing.JMenuItem();
  151. JSeparator jSeparator6 = new javax.swing.JSeparator();
  152. JMenuItem ftpDelMenuItem = new javax.swing.JMenuItem();
  153. JMenuItem ftpRenameMenuItem = new javax.swing.JMenuItem();
  154. JMenuItem newFolderMenuItem = new javax.swing.JMenuItem();
  155. JMenu helpMenu = new javax.swing.JMenu();
  156. JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
  157. JMenuItem bugMenuItem = new javax.swing.JMenuItem();
  158.  
  159. // setTitle("基于Socket的FTP软件Java实现");
  160. setTitle("Java语言实现简单FTP软件__欧阳鹏设计");
  161. addWindowListener(new java.awt.event.WindowAdapter() {
  162. public void windowOpened(java.awt.event.WindowEvent evt) {
  163. formWindowOpened(evt);
  164. }
  165.  
  166. public void windowIconified(final WindowEvent e) {
  167. setVisible(false);
  168. }
  169. });
  170. addComponentListener(new java.awt.event.ComponentAdapter() {
  171. public void componentResized(java.awt.event.ComponentEvent evt) {
  172. formComponentResized(evt);
  173. }
  174. });
  175. getContentPane().setLayout(new java.awt.GridBagLayout());
  176.  
  177. jPanel1.setLayout(new java.awt.GridLayout(0, 1));
  178.  
  179. jToolBar1.setRollover(true);
  180. jToolBar1.setFloatable(false);
  181.  
  182. linkTo.setText("连接到");
  183. linkTo.setFocusable(false);
  184. linkTo.setAction(LINK_TO_ACTION);
  185. jToolBar1.add(linkTo);
  186.  
  187. cutLinkButton.setText("断开");
  188. cutLinkButton.setEnabled(false);
  189. cutLinkButton.setFocusable(false);
  190. cutLinkButton.setAction(CUT_LINK_ACTION);
  191. jToolBar1.add(cutLinkButton);
  192.  
  193. jPanel1.add(jToolBar1);
  194.  
  195. shutdownButton = new JToggleButton();
  196. shutdownButton.setText("自动关机");
  197. shutdownButton.setToolTipText("队列完成后,自动关闭计算机");
  198. shutdownButton.setFocusable(false);
  199. jToolBar1.add(shutdownButton);
  200.  
  201. jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  202. jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4,
  203. javax.swing.BoxLayout.LINE_AXIS));
  204.  
  205. jLabel1.setText("主机地址:");
  206. jPanel4.add(jLabel1);
  207.  
  208. serverTextField.setText("192.168.1.100");
  209. serverTextField.addKeyListener(new java.awt.event.KeyAdapter() {
  210. public void keyPressed(java.awt.event.KeyEvent evt) {
  211. LinkFTPKeyPressed(evt);
  212. }
  213. });
  214. jPanel4.add(serverTextField);
  215.  
  216. jLabel2.setText("用户名:");
  217. jPanel4.add(jLabel2);
  218.  
  219. userTextField.setText("oyp");
  220. userTextField.setMaximumSize(new java.awt.Dimension(200, 2147483647));
  221. userTextField.setPreferredSize(new java.awt.Dimension(100, 21));
  222. userTextField.addKeyListener(new java.awt.event.KeyAdapter() {
  223. public void keyPressed(java.awt.event.KeyEvent evt) {
  224. LinkFTPKeyPressed(evt);
  225. }
  226. });
  227. jPanel4.add(userTextField);
  228.  
  229. jLabel3.setText("密码:");
  230. jPanel4.add(jLabel3);
  231.  
  232. PassField.setText("oyp");
  233. PassField.setMaximumSize(new java.awt.Dimension(200, 2147483647));
  234. PassField.setPreferredSize(new java.awt.Dimension(100, 21));
  235. PassField.addKeyListener(new java.awt.event.KeyAdapter() {
  236. public void keyPressed(java.awt.event.KeyEvent evt) {
  237. LinkFTPKeyPressed(evt);
  238. }
  239. });
  240. jPanel4.add(PassField);
  241.  
  242. jLabel6.setText("端口:");
  243. jPanel4.add(jLabel6);
  244.  
  245. portTextField.setText("21");
  246. portTextField.setMaximumSize(new java.awt.Dimension(100, 2147483647));
  247. portTextField.setPreferredSize(new java.awt.Dimension(50, 21));
  248. portTextField.addKeyListener(new java.awt.event.KeyAdapter() {
  249. public void keyPressed(java.awt.event.KeyEvent evt) {
  250. LinkFTPKeyPressed(evt);
  251. }
  252. });
  253. jPanel4.add(portTextField);
  254.  
  255. linkButton.setText("连接");
  256. linkButton.setFocusable(false);
  257. linkButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  258. linkButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  259. linkButton.addActionListener(new java.awt.event.ActionListener() {
  260. public void actionPerformed(java.awt.event.ActionEvent evt) {
  261. linkButtonActionPerformed(evt);
  262. }
  263. });
  264. jPanel4.add(linkButton);
  265.  
  266. jPanel1.add(jPanel4);
  267.  
  268. gridBagConstraints = new java.awt.GridBagConstraints();
  269. gridBagConstraints.gridx = 0; //指定包含组件的显示区域开始边的单元格,其中行的第一个单元格为 gridx=0。
  270. gridBagConstraints.gridy = 0; //指定位于组件显示区域的顶部的单元格,其中最上边的单元格为 gridy=0。
  271. //当组件的显示区域大于它所请求的显示区域的大小时使用此字段。
  272. gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; //在水平方向而不是垂直方向上调整组件大小。
  273. gridBagConstraints.weightx = 1.0; //指定如何分布额外的水平空间。
  274. getContentPane().add(jPanel1, gridBagConstraints);
  275.  
  276. jSplitPane2.setBorder(null);
  277. jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
  278. jSplitPane2.setResizeWeight(1.0);
  279. jSplitPane2.setContinuousLayout(true);
  280.  
  281. jSplitPane1.setDividerLocation(400);
  282. jSplitPane1.setDividerSize(10);
  283. jSplitPane1.setOneTouchExpandable(true);
  284. jSplitPane1.setRightComponent(ftpPanel);
  285. jSplitPane1.setLeftComponent(localPanel);
  286.  
  287. jSplitPane2.setLeftComponent(jSplitPane1);
  288.  
  289. jTabbedPane1.setMinimumSize(new java.awt.Dimension(40, 170));
  290.  
  291. jTabbedPane1.addTab("队列", queuePanel);// 添加队列面板
  292. jTabbedPane1.addTab("上传队列", uploadPanel);// 添加上传面板
  293. jTabbedPane1.addTab("下载队列", downloadPanel);// 添加下载面板
  294.  
  295. jSplitPane2.setBottomComponent(jTabbedPane1);
  296.  
  297. gridBagConstraints = new java.awt.GridBagConstraints();
  298. gridBagConstraints.gridx = 0;
  299. gridBagConstraints.gridy = 1;
  300. gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; //在水平方向和垂直方向上同时调整组件大小。
  301. gridBagConstraints.weightx = 1.0; //指定如何分布额外的水平空间。
  302. gridBagConstraints.weighty = 1.0; //指定如何分布额外的垂直空间。
  303. getContentPane().add(jSplitPane2, gridBagConstraints);
  304.  
  305. fileMenu.setMnemonic('f');
  306. fileMenu.setText("站点(F)");
  307.  
  308. ftpManageMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
  309. java.awt.event.KeyEvent.VK_S,
  310. java.awt.event.InputEvent.CTRL_MASK));
  311. ftpManageMenuItem.setText("FTP站点管理(S)");
  312. ftpManageMenuItem.addActionListener(new ActionListener() {
  313. @Override
  314. public void actionPerformed(ActionEvent e) {
  315. // System.out.println("action");
  316. FtpSiteDialog dialog = new FtpSiteDialog(FTPClientFrame.this);
  317. dialog.setVisible(true);
  318. }
  319. });
  320. fileMenu.add(ftpManageMenuItem);
  321. fileMenu.add(jSeparator1);
  322.  
  323. linkToMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
  324. java.awt.event.KeyEvent.VK_C,
  325. java.awt.event.InputEvent.CTRL_MASK));
  326. linkToMenuItem.setText("连接到...(C)");
  327. linkToMenuItem.setAction(LINK_TO_ACTION);
  328. fileMenu.add(linkToMenuItem);
  329.  
  330. cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
  331. java.awt.event.KeyEvent.VK_Z,
  332. java.awt.event.InputEvent.CTRL_MASK));
  333. cutMenuItem.setText("断开(Z)");
  334. cutMenuItem.setAction(CUT_LINK_ACTION);
  335. fileMenu.add(cutMenuItem);
  336. fileMenu.add(jSeparator2);
  337.  
  338. exitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(
  339. java.awt.event.KeyEvent.VK_X,
  340. java.awt.event.InputEvent.CTRL_MASK));
  341. exitMenuItem.setText("退出(X)");
  342. exitMenuItem.addActionListener(new ActionListener() {
  343. @Override
  344. public void actionPerformed(ActionEvent e) {
  345. System.exit(0);
  346. }
  347. });
  348. fileMenu.add(exitMenuItem);
  349.  
  350. MenuBar.add(fileMenu);
  351.  
  352. JMenu localMenu = new JMenu();
  353. localMenu.setMnemonic('l');
  354. localMenu.setText("本地(L)");
  355.  
  356. uploadMenuItem.setMnemonic('U');
  357. uploadMenuItem.setText("上传(U)");
  358. uploadMenuItem.setAction(localPanel.getActionMap().get("uploadAction"));
  359.  
  360. localMenu.add(uploadMenuItem);
  361. localMenu.add(jSeparator3);
  362.  
  363. createFolderMenuItem.setMnemonic('C');
  364. createFolderMenuItem.setText("新建文件夹(C)");
  365. createFolderMenuItem.setAction(localPanel.getActionMap().get(
  366. "createFolderAction"));
  367. localMenu.add(createFolderMenuItem);
  368.  
  369. renameMenuItem.setMnemonic('R');
  370. renameMenuItem.setText("重命名(R)");
  371. renameMenuItem.setAction(localPanel.getActionMap().get("renameAction"));
  372. localMenu.add(renameMenuItem);
  373.  
  374. delMenuItem.setMnemonic('D');
  375. delMenuItem.setText("删除(D)");
  376. delMenuItem.setAction(localPanel.getActionMap().get("delAction"));
  377. localMenu.add(delMenuItem);
  378.  
  379. JMenuItem localrefreshMenuItem = new JMenuItem();
  380. localrefreshMenuItem.setMnemonic('R');
  381. localrefreshMenuItem.setText("刷新(R)");
  382. localrefreshMenuItem.setAction(localPanel.getActionMap().get(
  383. "refreshAction"));
  384. localMenu.add(localrefreshMenuItem);
  385.  
  386. MenuBar.add(localMenu);
  387.  
  388. ftpMenu.setMnemonic('r');
  389. ftpMenu.setText("远程(R)");
  390.  
  391. downMenuItem.setMnemonic('U');
  392. downMenuItem.setText("下载(U)");
  393. downMenuItem.setAction(ftpPanel.getActionMap().get("downAction"));
  394. ftpMenu.add(downMenuItem);
  395. ftpMenu.add(jSeparator6);
  396.  
  397. ftpDelMenuItem.setMnemonic('D');
  398. ftpDelMenuItem.setText("删除(D)");
  399. ftpDelMenuItem.setAction(ftpPanel.getActionMap().get("delAction"));
  400. ftpMenu.add(ftpDelMenuItem);
  401.  
  402. ftpRenameMenuItem.setMnemonic('R');
  403. ftpRenameMenuItem.setText("重命名(R)");
  404. ftpRenameMenuItem
  405. .setAction(ftpPanel.getActionMap().get("renameAction"));
  406. ftpMenu.add(ftpRenameMenuItem);
  407.  
  408. newFolderMenuItem.setMnemonic('C');
  409. newFolderMenuItem.setText("新建文件夹(C)");
  410. newFolderMenuItem.setAction(ftpPanel.getActionMap().get(
  411. "createFolderAction"));
  412. ftpMenu.add(newFolderMenuItem);
  413.  
  414. JMenuItem refreshMenuItem = new JMenuItem();
  415. refreshMenuItem.setMnemonic('R');
  416. refreshMenuItem.setText("刷新(R)");
  417. refreshMenuItem.setAction(ftpPanel.getActionMap().get("refreshAction"));
  418. ftpMenu.add(refreshMenuItem);
  419.  
  420. MenuBar.add(ftpMenu);
  421.  
  422. helpMenu.setText("帮助(H)");
  423. aboutMenuItem.setMnemonic('a');
  424. aboutMenuItem.setText("关于(A)");
  425. aboutMenuItem.addActionListener(new AboutItemAction(this));
  426. helpMenu.add(aboutMenuItem);
  427.  
  428. bugMenuItem.setMnemonic('u');
  429. bugMenuItem.setText("错误报告(U)");
  430. bugMenuItem.addActionListener(new BugItemAction());
  431. helpMenu.add(bugMenuItem);
  432.  
  433. MenuBar.add(helpMenu);
  434.  
  435. setJMenuBar(MenuBar);
  436.  
  437. java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
  438. .getScreenSize();
  439. setBounds((screenSize.width - 800) / 2, (screenSize.height - 600) / 2,
  440. 800, 700);
  441. }
  442.  
  443. public JToggleButton getShutdownButton() {
  444. return shutdownButton;
  445. }
  446.  
  447. /**
  448. * 窗体装载的事件处理方法
  449. */
  450. private void formWindowOpened(java.awt.event.WindowEvent evt) {
  451. jSplitPane1.setDividerLocation(0.50);
  452. localPanel.getLocalDiskComboBox().setSelectedIndex(1);
  453. localPanel.getLocalDiskComboBox().setSelectedIndex(0);
  454. }
  455.  
  456. /**
  457. * 窗体大小调整的事件处理方法
  458. */
  459. private void formComponentResized(java.awt.event.ComponentEvent evt) {
  460. jSplitPane1.setDividerLocation(0.50);
  461. }
  462.  
  463. /**
  464. * 连接按钮的事件处理方法
  465. */
  466. private void linkButtonActionPerformed(java.awt.event.ActionEvent evt) {
  467. try {
  468. String server = serverTextField.getText(); // 获取服务器地址
  469. if (server == null) {
  470. return;
  471. }
  472. String portStr = portTextField.getText(); // 获取端口号
  473. if (portStr == null) {
  474. portStr = "21";
  475. }
  476. int port = Integer.parseInt(portStr.trim());
  477. String userStr = userTextField.getText(); // 获取用户名
  478. userStr = userStr == null ? "" : userStr.trim();
  479. String passStr = PassField.getText(); // 获取密码
  480. passStr = passStr == null ? "" : passStr.trim();
  481. cutLinkButton.doClick();
  482. ftpClient = new FtpClient();
  483. ftpClient.openServer(server.trim(), port); // 连接服务器
  484. ftpClient.login(userStr, passStr); // 登录服务器
  485. ftpClient.binary(); // 使用二进制传输模式
  486. if (ftpClient.serverIsOpen()) { // 如果连接成功
  487. CUT_LINK_ACTION.setEnabled(true); // 设置断开按钮可用
  488. } else { // 否则
  489. CUT_LINK_ACTION.setEnabled(false); // 设置断开按钮不可用
  490. return; // 并结束事件处理
  491. }
  492. // 设置本地资源管理面板的FTP连接信息
  493. localPanel.setFtpClient(server, port, userStr, passStr);
  494. // 设置上传按钮可用
  495. localPanel.getActionMap().get("uploadAction").setEnabled(true);
  496. ftpPanel.setFtpClient(ftpClient);// 设置FTP资源管理面板的FTP连接信息
  497. // 设置下载按钮可用
  498. ftpPanel.getActionMap().get("downAction").setEnabled(true);
  499. ftpPanel.refreshCurrentFolder();// 刷新FTP资源管理面板的当前文件夹
  500. queuePanel.startQueue(); // 启动任务队列线程
  501. } catch (Exception ex) {
  502. ex.printStackTrace();
  503. }
  504. }
  505.  
  506. /**
  507. * 连接FTP相关的文本框 和密码框的回车事件
  508. */
  509. private void LinkFTPKeyPressed(java.awt.event.KeyEvent evt) {
  510. if (evt.getKeyChar() == '\n') {
  511. linkButton.doClick();
  512. }
  513. }
  514.  
  515. public LocalPanel getLocalPanel() {
  516. return localPanel;
  517. }
  518.  
  519. public FtpPanel getFtpPanel() {
  520. return ftpPanel;
  521. }
  522.  
  523. public QueuePanel getQueuePanel() {
  524. return queuePanel;
  525. }
  526.  
  527. public UploadPanel getUploadPanel() {
  528. return uploadPanel;
  529. }
  530.  
  531. public DownloadPanel getDownloadPanel() {
  532. return downloadPanel;
  533. }
  534.  
  535. public FtpClient getFtpClient() {
  536. return ftpClient;
  537. }
  538.  
  539. /**
  540. * 设置FTP连接信息的方法,由FTP站点管理器调用
  541. */
  542. public void setLinkInfo(SiteInfoBean bean) {
  543. serverTextField.setText(bean.getServer()); // 设置主机地址
  544. portTextField.setText(bean.getPort() + ""); // 设置端口号
  545. userTextField.setText(bean.getUserName()); // 设置用户名
  546. PassField.setText(""); // 密码清空
  547. PassField.requestFocus(); // 密码框请求焦点
  548. }
  549. }

整体界面如下:

==================================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/9672939

===================================================================================================

Java语言实现简单FTP软件------>FTP软件主界面的实现(四)的更多相关文章

  1. Java语言实现简单FTP软件------>源码放送(十三)

    Java语言实现简单FTP软件------>FTP协议分析(一) Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二) Java语言实现简单FTP软件----- ...

  2. Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)

    1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...

  3. 一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

    这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧.好,废话不多说,进入今天的主题. 效果 图一是Tv应用:当贝市场的主页 图二是咱自己撸的简单粗暴的 Tv ...

  4. Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二)

    介绍完FTP协议后,来看看该软件完成后的效果图 客户端的主界面如上图所示,主要是分为以下几个界面: 数据输入界面:用来让用户输入服务器的地址,用户名,密码,端口号等. 站点菜单.本地菜单.远程菜单以及 ...

  5. Java语言实现简单FTP软件------>FTP软件本地窗口的实现(五)

    1.首先看一下本地窗口的布局效果 2.看一下本地窗口实现的代码框架 2.本地窗口的具体实现代码LocalPanel.java package com.oyp.ftp.panel.local; impo ...

  6. Java语言实现简单FTP软件------>FTP软件远程窗口的实现(六)

    1.首先看一下远程窗口的布局效果 2.看一下本地窗口实现的代码框架 3.远程窗口主要实现代码FtpPanel.java package com.oyp.ftp.panel.ftp; import ja ...

  7. Java语言实现简单FTP软件------>远程文件管理模块的实现(十)

    首先看一下界面: 1.远程FTP服务器端的文件列表的显示 将远程的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改 ...

  8. 用Java语言编写的迷宫小游戏软件

    可查看本项目的github 源码链接,撒娇打滚求 star 哦~~ღ( ´・ᴗ・ ` )比心 本仓库代码是经过 eclipse 编译运行过的,一般情况下将本仓库代码下载下来之后,使用 eclipse ...

  9. 用Java语言实现简单的词法分析器

    编译原理中的词法分析算是很重要的一个部分,原理比较简单,不过网上大部分都是用C语言或者C++来编写,笔者近期在学习Java,故用Java语言实现了简单的词法分析器. 要分析的代码段如下: 输出结果如下 ...

随机推荐

  1. 查看电脑CPU核心数的方法

    查看电脑CPU核心数的方法: 方法一: 同时按下[Ctrl+Shift+Esc]组合快捷键打开任务管理器: 点击[性能]就可以看出是几核CPU了: 方法二: 在计算机图标上面点击右键,选择“管理”: ...

  2. java基础入门-多线程同步浅析-以银行转账为样例

    在说之前先普及一下线程是什么? 线程:说白了就是一个任务片段 进程:是一个具有独立功能的程序关于某个数据集合的一次执行活动.一个进程有一个或者多个线程 线程与进程的本质差别就是有么有数据共享空间.线程 ...

  3. sshd服务安装和配置管理

    1.SSHD简介(介绍) SSH协议:安全外壳协议,为Secure Shell的缩写,SSH为建立在应用层和传输层基础上的安全协议. sshd服务使用SSH协议可以用来进行远程控制,或在计算机之间传送 ...

  4. Redis之Hash数据结构

    0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数 ...

  5. 深入PHP中慎用双等于(==)的详解

    PHP比较运算符出现的频率实在是太高了,尤其是 ==if(a == b){// do something}但是,你真的掌握了 == 了吗?细节很重要!来看下面的代码,说出你认为正确的答案var_dum ...

  6. MII、GMII、RMII、SGMII、XGMII、XAUI、Interlaken

    MII即媒体独立接口,也叫介质无关接口.它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1).数据接口包括分别用于发送器和接收器的两条独立信道 ...

  7. PHP输出xls文件

    PHP输出xls文件 标签: phpexcelxmlcsvborderheader 2008-11-17 09:33 2611人阅读 评论(0) 收藏 举报  分类: WebDev(9)  版权声明: ...

  8. redis主从备份

    redis主从备份,默认是读写分离的,master用于写,slave用于读.slave的写只能用于存储一些短暂状态的变量,应为在下次同步时,会被移除. 配置主从备份原则:配从不配主,既只需修改从库配置 ...

  9. driver基础

    驱动测试时,linux驱动常以模块方式插入内核.应包含头文件:linux/kernel.h,linux/module.h 设备驱动的一般结构:Soc(主芯片->设备控制器->外设引脚)-- ...

  10. github桌面工具commit不了解决

    这样发现github上还是空文件,  因为要重新添加过 1.  git add -A  添加所有文件 2. git commit -m "xxx" 3.  git push -u ...