Java语言实现简单FTP软件 FTP软件主界面(4)

发布时间 - 2026-01-11 00:28:13    点击率:

首先看一下FTP软件的整体代码框架,具体内容如下

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

package com.oyp.ftp; 
 
import java.util.logging.Level; 
import java.util.logging.Logger; 
 
import javax.swing.UIManager; 
 
import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel; 
 
public class FTPMain { 
 /** 
  * 本应用的程序入口 
  */ 
 public static void main(String args[]) { 
  //导致 runnable 的 run 方法在 EventQueue 的指派线程上被调用。 
  java.awt.EventQueue.invokeLater(new Runnable() { 
   public void run() { 
    try { 
     //使用 LookAndFeel 对象设置当前的默认外观。 
     UIManager.setLookAndFeel(new NimbusLookAndFeel());//设置一个非常漂亮的外观 
//     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     FTPClientFrame client_Frame = new FTPClientFrame(); 
     client_Frame.setVisible(true); 
    } catch (Exception ex) { 
     Logger.getLogger(FTPClientFrame.class.getName()).log( 
       Level.SEVERE, null, ex); 
    } 
   } 
  }); 
 } 
}

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

package com.oyp.ftp; 
 
import java.awt.AWTException; 
import java.awt.MenuItem; 
import java.awt.PopupMenu; 
import java.awt.SystemTray; 
import java.awt.TrayIcon; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowEvent; 
 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JPasswordField; 
import javax.swing.JSeparator; 
import javax.swing.JSplitPane; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextField; 
import javax.swing.JToggleButton; 
import javax.swing.JToolBar; 
import javax.swing.UIManager; 
 
import com.oyp.ftp.panel.ftp.FtpPanel; 
import com.oyp.ftp.panel.local.LocalPanel; 
import com.oyp.ftp.panel.manager.FtpSiteDialog; 
import com.oyp.ftp.panel.queue.DownloadPanel; 
import com.oyp.ftp.panel.queue.QueuePanel; 
import com.oyp.ftp.panel.queue.UploadPanel; 
import com.oyp.ftp.utils.FtpClient; 
import com.oyp.ftp.utils.SiteInfoBean; 
import com.sun.java.swing.plaf.nimbus.*; 
 
public class FTPClientFrame extends javax.swing.JFrame { 
 FtpClient ftpClient; 
 private JPasswordField PassField; 
 private JButton cutLinkButton; 
 FtpPanel ftpPanel; 
 LocalPanel localPanel; 
 private JTextField portTextField; 
 private JTextField serverTextField; 
 private JTextField userTextField; 
 private QueuePanel queuePanel; 
 private UploadPanel uploadPanel; 
 private DownloadPanel downloadPanel; 
 private JSplitPane jSplitPane1; 
 private JButton linkButton; 
 private final LinkToAction LINK_TO_ACTION; // 连接到 按钮的动作处理器 
 private final CutLinkAction CUT_LINK_ACTION; // 断开 按钮的动作处理器 
 private SystemTray systemTray; 
 private JToggleButton shutdownButton; 
 private final ImageIcon icon = new ImageIcon(getClass().getResource( 
   "/com/oyp/ftp/res/trayIcon.png")); 
 
 public FTPClientFrame() { 
  LINK_TO_ACTION = new LinkToAction(this, "连接到", null); 
  CUT_LINK_ACTION = new CutLinkAction(this, "断开", null); 
  initComponents(); 
  initSystemTray(); 
 } 
 
 /** 
  * 初始化系统托盘的方法 
  */ 
 private void initSystemTray() { 
  if (SystemTray.isSupported()) 
   systemTray = SystemTray.getSystemTray(); 
  TrayIcon trayIcon = new TrayIcon(icon.getImage()); 
  PopupMenu popupMenu = new PopupMenu("托盘菜单"); 
 
  // 创建显示主窗体菜单项 
  MenuItem showMenuItem = new MenuItem("显示主窗体"); 
  showMenuItem.addActionListener(new ActionListener() { 
   @Override 
   public void actionPerformed(ActionEvent e) { 
    FTPClientFrame.this.setExtendedState(JFrame.NORMAL); 
    FTPClientFrame.this.setVisible(true); 
   } 
  }); 
 
  // 创建退出菜单项 
  MenuItem exitMenuItem = new MenuItem("退出"); 
  exitMenuItem.addActionListener(new ActionListener() { 
   @Override 
   public void actionPerformed(ActionEvent e) { 
    System.exit(0); 
   } 
  }); 
 
  popupMenu.add(showMenuItem); 
  popupMenu.addSeparator(); 
  popupMenu.add(exitMenuItem); 
  trayIcon.setPopupMenu(popupMenu); 
  try { 
   systemTray.add(trayIcon); 
  } catch (AWTException e) { 
   e.printStackTrace(); 
  } 
 } 
 
 /** 
  * 初始化程序界面的方法 
  */ 
 private void initComponents() { 
  setIconImage(icon.getImage()); 
  java.awt.GridBagConstraints gridBagConstraints; 
 
  JPanel jPanel1 = new JPanel(); 
  JToolBar jToolBar1 = new JToolBar(); 
  JButton linkTo = new JButton(); 
  cutLinkButton = new JButton(); 
  JPanel jPanel4 = new JPanel(); 
  JLabel jLabel1 = new JLabel(); 
  serverTextField = new JTextField(); 
  JLabel jLabel2 = new JLabel(); 
  userTextField = new JTextField(); 
  JLabel jLabel3 = new JLabel(); 
  PassField = new JPasswordField(); 
  JLabel jLabel6 = new JLabel(); 
  portTextField = new JTextField(); 
  linkButton = new JButton(); 
  JSplitPane jSplitPane2 = new JSplitPane(); 
  jSplitPane1 = new JSplitPane(); 
  ftpPanel = new FtpPanel(this); // 初始化FTP远程资源面板 
  localPanel = new LocalPanel(this); // 初始化本地资源管理面板 
  uploadPanel = new UploadPanel(); // 初始化上传队列面板 
  downloadPanel = new DownloadPanel(); // 初始化下载队列面板 
  queuePanel = new QueuePanel(this); // 初始化队列面板 
 
  JTabbedPane jTabbedPane1 = new JTabbedPane(); 
  JMenuBar MenuBar = new JMenuBar(); 
  JMenu fileMenu = new JMenu(); 
  JMenuItem ftpManageMenuItem = new JMenuItem(); 
  JSeparator jSeparator1 = new JSeparator(); 
  JMenuItem linkToMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem cutMenuItem = new javax.swing.JMenuItem(); 
  JSeparator jSeparator2 = new javax.swing.JSeparator(); 
  JMenuItem exitMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem uploadMenuItem = new javax.swing.JMenuItem(); 
  JSeparator jSeparator3 = new javax.swing.JSeparator(); 
  JMenuItem createFolderMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem renameMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem delMenuItem = new javax.swing.JMenuItem(); 
  JMenu ftpMenu = new javax.swing.JMenu(); 
  JMenuItem downMenuItem = new javax.swing.JMenuItem(); 
  JSeparator jSeparator6 = new javax.swing.JSeparator(); 
  JMenuItem ftpDelMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem ftpRenameMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem newFolderMenuItem = new javax.swing.JMenuItem(); 
  JMenu helpMenu = new javax.swing.JMenu(); 
  JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); 
  JMenuItem bugMenuItem = new javax.swing.JMenuItem(); 
 
//  setTitle("基于Socket的FTP软件Java实现"); 
  setTitle("Java语言实现简单FTP软件__欧阳鹏设计"); 
  addWindowListener(new java.awt.event.WindowAdapter() { 
   public void windowOpened(java.awt.event.WindowEvent evt) { 
    formWindowOpened(evt); 
   } 
 
   public void windowIconified(final WindowEvent e) { 
    setVisible(false); 
   } 
  }); 
  addComponentListener(new java.awt.event.ComponentAdapter() { 
   public void componentResized(java.awt.event.ComponentEvent evt) { 
    formComponentResized(evt); 
   } 
  }); 
  getContentPane().setLayout(new java.awt.GridBagLayout()); 
 
  jPanel1.setLayout(new java.awt.GridLayout(0, 1)); 
 
  jToolBar1.setRollover(true); 
  jToolBar1.setFloatable(false); 
 
  linkTo.setText("连接到"); 
  linkTo.setFocusable(false); 
  linkTo.setAction(LINK_TO_ACTION); 
  jToolBar1.add(linkTo); 
 
  cutLinkButton.setText("断开"); 
  cutLinkButton.setEnabled(false); 
  cutLinkButton.setFocusable(false); 
  cutLinkButton.setAction(CUT_LINK_ACTION); 
  jToolBar1.add(cutLinkButton); 
 
  jPanel1.add(jToolBar1); 
   
  shutdownButton = new JToggleButton(); 
  shutdownButton.setText("自动关机"); 
  shutdownButton.setToolTipText("队列完成后,自动关闭计算机"); 
  shutdownButton.setFocusable(false); 
  jToolBar1.add(shutdownButton); 
 
  jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 
  jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, 
    javax.swing.BoxLayout.LINE_AXIS)); 
 
  jLabel1.setText("主机地址:"); 
  jPanel4.add(jLabel1); 
 
  serverTextField.setText("192.168.1.100"); 
  serverTextField.addKeyListener(new java.awt.event.KeyAdapter() { 
   public void keyPressed(java.awt.event.KeyEvent evt) { 
    LinkFTPKeyPressed(evt); 
   } 
  }); 
  jPanel4.add(serverTextField); 
 
  jLabel2.setText("用户名:"); 
  jPanel4.add(jLabel2); 
 
  userTextField.setText("oyp"); 
  userTextField.setMaximumSize(new java.awt.Dimension(200, 2147483647)); 
  userTextField.setPreferredSize(new java.awt.Dimension(100, 21)); 
  userTextField.addKeyListener(new java.awt.event.KeyAdapter() { 
   public void keyPressed(java.awt.event.KeyEvent evt) { 
    LinkFTPKeyPressed(evt); 
   } 
  }); 
  jPanel4.add(userTextField); 
 
  jLabel3.setText("密码:"); 
  jPanel4.add(jLabel3); 
 
  PassField.setText("oyp"); 
  PassField.setMaximumSize(new java.awt.Dimension(200, 2147483647)); 
  PassField.setPreferredSize(new java.awt.Dimension(100, 21)); 
  PassField.addKeyListener(new java.awt.event.KeyAdapter() { 
   public void keyPressed(java.awt.event.KeyEvent evt) { 
    LinkFTPKeyPressed(evt); 
   } 
  }); 
  jPanel4.add(PassField); 
 
  jLabel6.setText("端口:"); 
  jPanel4.add(jLabel6); 
 
  portTextField.setText("21"); 
  portTextField.setMaximumSize(new java.awt.Dimension(100, 2147483647)); 
  portTextField.setPreferredSize(new java.awt.Dimension(50, 21)); 
  portTextField.addKeyListener(new java.awt.event.KeyAdapter() { 
   public void keyPressed(java.awt.event.KeyEvent evt) { 
    LinkFTPKeyPressed(evt); 
   } 
  }); 
  jPanel4.add(portTextField); 
 
  linkButton.setText("连接"); 
  linkButton.setFocusable(false); 
  linkButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); 
  linkButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); 
  linkButton.addActionListener(new java.awt.event.ActionListener() { 
   public void actionPerformed(java.awt.event.ActionEvent evt) { 
    linkButtonActionPerformed(evt); 
   } 
  }); 
  jPanel4.add(linkButton); 
 
  jPanel1.add(jPanel4); 
 
  gridBagConstraints = new java.awt.GridBagConstraints(); 
  gridBagConstraints.gridx = 0; //指定包含组件的显示区域开始边的单元格,其中行的第一个单元格为 gridx=0。 
  gridBagConstraints.gridy = 0; //指定位于组件显示区域的顶部的单元格,其中最上边的单元格为 gridy=0。 
  //当组件的显示区域大于它所请求的显示区域的大小时使用此字段。 
  gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; //在水平方向而不是垂直方向上调整组件大小。 
  gridBagConstraints.weightx = 1.0; //指定如何分布额外的水平空间。 
  getContentPane().add(jPanel1, gridBagConstraints); 
 
  jSplitPane2.setBorder(null); 
  jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); 
  jSplitPane2.setResizeWeight(1.0); 
  jSplitPane2.setContinuousLayout(true); 
 
  jSplitPane1.setDividerLocation(400); 
  jSplitPane1.setDividerSize(10); 
  jSplitPane1.setOneTouchExpandable(true); 
  jSplitPane1.setRightComponent(ftpPanel); 
  jSplitPane1.setLeftComponent(localPanel); 
 
  jSplitPane2.setLeftComponent(jSplitPane1); 
 
  jTabbedPane1.setMinimumSize(new java.awt.Dimension(40, 170)); 
 
  jTabbedPane1.addTab("队列", queuePanel);// 添加队列面板 
  jTabbedPane1.addTab("上传队列", uploadPanel);// 添加上传面板 
  jTabbedPane1.addTab("下载队列", downloadPanel);// 添加下载面板 
 
  jSplitPane2.setBottomComponent(jTabbedPane1); 
 
  gridBagConstraints = new java.awt.GridBagConstraints(); 
  gridBagConstraints.gridx = 0; 
  gridBagConstraints.gridy = 1; 
  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; //在水平方向和垂直方向上同时调整组件大小。 
  gridBagConstraints.weightx = 1.0; //指定如何分布额外的水平空间。 
  gridBagConstraints.weighty = 1.0; //指定如何分布额外的垂直空间。 
  getContentPane().add(jSplitPane2, gridBagConstraints); 
 
  fileMenu.setMnemonic('f'); 
  fileMenu.setText("站点(F)"); 
 
  ftpManageMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( 
    java.awt.event.KeyEvent.VK_S, 
    java.awt.event.InputEvent.CTRL_MASK)); 
  ftpManageMenuItem.setText("FTP站点管理(S)"); 
  ftpManageMenuItem.addActionListener(new ActionListener() { 
   @Override 
   public void actionPerformed(ActionEvent e) { 
//    System.out.println("action"); 
    FtpSiteDialog dialog = new FtpSiteDialog(FTPClientFrame.this); 
    dialog.setVisible(true); 
   } 
  }); 
  fileMenu.add(ftpManageMenuItem); 
  fileMenu.add(jSeparator1); 
 
  linkToMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( 
    java.awt.event.KeyEvent.VK_C, 
    java.awt.event.InputEvent.CTRL_MASK)); 
  linkToMenuItem.setText("连接到...(C)"); 
  linkToMenuItem.setAction(LINK_TO_ACTION); 
  fileMenu.add(linkToMenuItem); 
 
  cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( 
    java.awt.event.KeyEvent.VK_Z, 
    java.awt.event.InputEvent.CTRL_MASK)); 
  cutMenuItem.setText("断开(Z)"); 
  cutMenuItem.setAction(CUT_LINK_ACTION); 
  fileMenu.add(cutMenuItem); 
  fileMenu.add(jSeparator2); 
 
  exitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( 
    java.awt.event.KeyEvent.VK_X, 
    java.awt.event.InputEvent.CTRL_MASK)); 
  exitMenuItem.setText("退出(X)"); 
  exitMenuItem.addActionListener(new ActionListener() { 
   @Override 
   public void actionPerformed(ActionEvent e) { 
    System.exit(0); 
   } 
  }); 
  fileMenu.add(exitMenuItem); 
 
  MenuBar.add(fileMenu); 
 
  JMenu localMenu = new JMenu(); 
  localMenu.setMnemonic('l'); 
  localMenu.setText("本地(L)"); 
 
  uploadMenuItem.setMnemonic('U'); 
  uploadMenuItem.setText("上传(U)"); 
  uploadMenuItem.setAction(localPanel.getActionMap().get("uploadAction")); 
 
  localMenu.add(uploadMenuItem); 
  localMenu.add(jSeparator3); 
 
  createFolderMenuItem.setMnemonic('C'); 
  createFolderMenuItem.setText("新建文件夹(C)"); 
  createFolderMenuItem.setAction(localPanel.getActionMap().get( 
    "createFolderAction")); 
  localMenu.add(createFolderMenuItem); 
 
  renameMenuItem.setMnemonic('R'); 
  renameMenuItem.setText("重命名(R)"); 
  renameMenuItem.setAction(localPanel.getActionMap().get("renameAction")); 
  localMenu.add(renameMenuItem); 
 
  delMenuItem.setMnemonic('D'); 
  delMenuItem.setText("删除(D)"); 
  delMenuItem.setAction(localPanel.getActionMap().get("delAction")); 
  localMenu.add(delMenuItem); 
 
  JMenuItem localrefreshMenuItem = new JMenuItem(); 
  localrefreshMenuItem.setMnemonic('R'); 
  localrefreshMenuItem.setText("刷新(R)"); 
  localrefreshMenuItem.setAction(localPanel.getActionMap().get( 
    "refreshAction")); 
  localMenu.add(localrefreshMenuItem); 
 
  MenuBar.add(localMenu); 
 
  ftpMenu.setMnemonic('r'); 
  ftpMenu.setText("远程(R)"); 
 
  downMenuItem.setMnemonic('U'); 
  downMenuItem.setText("下载(U)"); 
  downMenuItem.setAction(ftpPanel.getActionMap().get("downAction")); 
  ftpMenu.add(downMenuItem); 
  ftpMenu.add(jSeparator6); 
 
  ftpDelMenuItem.setMnemonic('D'); 
  ftpDelMenuItem.setText("删除(D)"); 
  ftpDelMenuItem.setAction(ftpPanel.getActionMap().get("delAction")); 
  ftpMenu.add(ftpDelMenuItem); 
 
  ftpRenameMenuItem.setMnemonic('R'); 
  ftpRenameMenuItem.setText("重命名(R)"); 
  ftpRenameMenuItem 
    .setAction(ftpPanel.getActionMap().get("renameAction")); 
  ftpMenu.add(ftpRenameMenuItem); 
 
  newFolderMenuItem.setMnemonic('C'); 
  newFolderMenuItem.setText("新建文件夹(C)"); 
  newFolderMenuItem.setAction(ftpPanel.getActionMap().get( 
    "createFolderAction")); 
  ftpMenu.add(newFolderMenuItem); 
 
  JMenuItem refreshMenuItem = new JMenuItem(); 
  refreshMenuItem.setMnemonic('R'); 
  refreshMenuItem.setText("刷新(R)"); 
  refreshMenuItem.setAction(ftpPanel.getActionMap().get("refreshAction")); 
  ftpMenu.add(refreshMenuItem); 
 
  MenuBar.add(ftpMenu); 
 
  helpMenu.setText("帮助(H)"); 
  aboutMenuItem.setMnemonic('a'); 
  aboutMenuItem.setText("关于(A)"); 
  aboutMenuItem.addActionListener(new AboutItemAction(this)); 
  helpMenu.add(aboutMenuItem); 
 
  bugMenuItem.setMnemonic('u'); 
  bugMenuItem.setText("错误报告(U)"); 
  bugMenuItem.addActionListener(new BugItemAction()); 
  helpMenu.add(bugMenuItem); 
 
  MenuBar.add(helpMenu); 
 
  setJMenuBar(MenuBar); 
 
  java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit() 
    .getScreenSize(); 
  setBounds((screenSize.width - 800) / 2, (screenSize.height - 600) / 2, 
    800, 700); 
 } 
 
 public JToggleButton getShutdownButton() { 
  return shutdownButton; 
 } 
 
 /** 
  * 窗体装载的事件处理方法 
  */ 
 private void formWindowOpened(java.awt.event.WindowEvent evt) { 
  jSplitPane1.setDividerLocation(0.50); 
  localPanel.getLocalDiskComboBox().setSelectedIndex(1); 
  localPanel.getLocalDiskComboBox().setSelectedIndex(0); 
 } 
 
 /** 
  * 窗体大小调整的事件处理方法 
  */ 
 private void formComponentResized(java.awt.event.ComponentEvent evt) { 
  jSplitPane1.setDividerLocation(0.50); 
 } 
 
 /** 
  * 连接按钮的事件处理方法 
  */ 
 private void linkButtonActionPerformed(java.awt.event.ActionEvent evt) { 
  try { 
   String server = serverTextField.getText(); // 获取服务器地址 
   if (server == null) { 
    return; 
   } 
   String portStr = portTextField.getText(); // 获取端口号 
   if (portStr == null) { 
    portStr = "21"; 
   } 
   int port = Integer.parseInt(portStr.trim()); 
   String userStr = userTextField.getText(); // 获取用户名 
   userStr = userStr == null ? "" : userStr.trim(); 
   String passStr = PassField.getText(); // 获取密码 
   passStr = passStr == null ? "" : passStr.trim(); 
   cutLinkButton.doClick(); 
   ftpClient = new FtpClient(); 
   ftpClient.openServer(server.trim(), port); // 连接服务器 
   ftpClient.login(userStr, passStr); // 登录服务器 
   ftpClient.binary(); // 使用二进制传输模式 
   if (ftpClient.serverIsOpen()) { // 如果连接成功 
    CUT_LINK_ACTION.setEnabled(true); // 设置断开按钮可用 
   } else { // 否则 
    CUT_LINK_ACTION.setEnabled(false); // 设置断开按钮不可用 
    return; // 并结束事件处理 
   } 
   // 设置本地资源管理面板的FTP连接信息 
   localPanel.setFtpClient(server, port, userStr, passStr); 
   // 设置上传按钮可用 
   localPanel.getActionMap().get("uploadAction").setEnabled(true); 
   ftpPanel.setFtpClient(ftpClient);// 设置FTP资源管理面板的FTP连接信息 
   // 设置下载按钮可用 
   ftpPanel.getActionMap().get("downAction").setEnabled(true); 
   ftpPanel.refreshCurrentFolder();// 刷新FTP资源管理面板的当前文件夹 
   queuePanel.startQueue(); // 启动任务队列线程 
  } catch (Exception ex) { 
   ex.printStackTrace(); 
  } 
 } 
 
 /** 
  * 连接FTP相关的文本框 和密码框的回车事件 
  */ 
 private void LinkFTPKeyPressed(java.awt.event.KeyEvent evt) { 
  if (evt.getKeyChar() == '\n') { 
   linkButton.doClick(); 
  } 
 } 
 
 public LocalPanel getLocalPanel() { 
  return localPanel; 
 } 
 
 public FtpPanel getFtpPanel() { 
  return ftpPanel; 
 } 
 
 public QueuePanel getQueuePanel() { 
  return queuePanel; 
 } 
 
 public UploadPanel getUploadPanel() { 
  return uploadPanel; 
 } 
 
 public DownloadPanel getDownloadPanel() { 
  return downloadPanel; 
 } 
 
 public FtpClient getFtpClient() { 
  return ftpClient; 
 } 
 
 /** 
  * 设置FTP连接信息的方法,由FTP站点管理器调用 
  */ 
 public void setLinkInfo(SiteInfoBean bean) { 
  serverTextField.setText(bean.getServer()); // 设置主机地址 
  portTextField.setText(bean.getPort() + ""); // 设置端口号 
  userTextField.setText(bean.getUserName()); // 设置用户名 
  PassField.setText(""); // 密码清空 
  PassField.requestFocus(); // 密码框请求焦点 
 } 
} 

整体界面如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Java  # FTP  # 主界面  # iis创建用户隔离模式FTP站点的方法  # 如何编写一个创建FTP站点的函数?  # Java语言实现简单FTP软件 FTP上传下载管理模块实现(11)  # Java语言实现简单FTP软件 FTP远程文件管理模块实现(10)  # Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)  # Java语言实现简单FTP软件 FTP连接管理模块实现(8)  # Java语言实现简单FTP软件 FTP软件远程窗口实现(6)  # Java语言实现简单FTP软件 FTP软件效果图预览之下载功能(2)  # Java语言实现简单FTP软件 FTP协议分析(1)  # Java语言实现简单FTP软件 辅助功能模块FTP站点管理实现(12)  # 连接到  # 上传  # 单元格  # 资源管理  # 重命名  # 端口号  # 菜单项  # 第一个  # 主程序  # 采用了  # 管理器  # 看一下  # 错误报告  # 具体内容  # 不可用  # 大家多多  # 清空  # 文本框  # 自动关机  # 自动关闭 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Internet Explorer官网直接进入 IE浏览器在线体验版网址  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  如何将凡科建站内容保存为本地文件?  手机网站制作与建设方案,手机网站如何建设?  简单实现Android验证码  如何在阿里云服务器自主搭建网站?  如何在建站之星绑定自定义域名?  如何安全更换建站之星模板并保留数据?  如何实现建站之星域名转发设置?  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  利用python获取某年中每个月的第一天和最后一天  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel如何记录自定义日志?(Log频道配置)  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何在阿里云购买域名并搭建网站?  如何批量查询域名的建站时间记录?  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何快速建站并高效导出源代码?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  html如何与html链接_实现多个HTML页面互相链接【互相】  如何选择PHP开源工具快速搭建网站?  原生JS获取元素集合的子元素宽度实例  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  如何用好域名打造高点击率的自主建站?  javascript基本数据类型及类型检测常用方法小结  Swift中循环语句中的转移语句 break 和 continue  公司网站制作价格怎么算,公司办个官网需要多少钱?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel如何创建自定义Artisan命令?(代码示例)  长沙企业网站制作哪家好,长沙水业集团官方网站?  详解Android中Activity的四大启动模式实验简述  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Python制作简易注册登录系统  教你用AI将一段旋律扩展成一首完整的曲子  javascript中对象的定义、使用以及对象和原型链操作小结  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速搭建高效服务器建站系统?  详解阿里云nginx服务器多站点的配置  网易LOFTER官网链接 老福特网页版登录地址