• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java语言实现简单FTP软件 FTP上传下载队列窗口实现(7)

Java语言实现简单FTP软件 FTP上传下载队列窗口实现(7)

作者:欧阳鹏 字体:[增加 减小] 来源:互联网 时间:2017-05-28

欧阳鹏 通过本文主要向大家介绍了java语言实现,java语言实现机制,java语言实现计算器,软件工程java语言实现,java语言是简单的等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文为大家介绍了FTP上传下载队列窗口的实现方法,供大家参考,具体内容如下

1、首先看一下队列窗口的界面

2、看一下上传队列窗口的界面

3、看一下下载队列窗口的界面

package com.oyp.ftp.panel.queue; 
 
import static java.awt.BorderLayout.CENTER; 
import static java.awt.BorderLayout.EAST; 
import static javax.swing.ListSelectionModel.SINGLE_SELECTION; 
 
import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.IOException; 
import java.util.LinkedList; 
 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JToggleButton; 
import javax.swing.JToolBar; 
import javax.swing.ListSelectionModel; 
import javax.swing.Timer; 
import javax.swing.table.DefaultTableModel; 
 
import com.oyp.ftp.FTPClientFrame; 
import com.oyp.ftp.utils.FtpClient; 
import com.oyp.ftp.utils.FtpFile; 
 
/** 
 * 任务队列控制面板 
 */ 
public class QueuePanel extends JPanel implements ActionListener { 
 private JTable queueTable = new JTable(); // 显示任务队列的表格组件 
 private JScrollPane scrollPane = new JScrollPane(); 
 private FTPClientFrame frame; // 主窗体的引用对象 
 private String[] columns; 
 private FtpClient ftpClient; // FTP协议的控制类 
 private Timer queueTimer;  // 队列的定时器 
 private LinkedList<Object[]> localQueue; // 本地面板的上传队列 
 private LinkedList<Object[]> ftpQueue;  // FTP面板的下载队列 
 private JToggleButton stopButton; 
 private boolean stop = false; // 队列的控制变量 
 
 /** 
  * 默认的构造方法 
  */ 
 public QueuePanel() { 
  initComponent(); 
 } 
 
 /** 
  * 自定义的构造方法 
  * 
  * @param frame 
  *   主窗体 
  */ 
 public QueuePanel(FTPClientFrame frame) { 
  this.frame = frame; 
  // 从主窗体获取本地面板的上传队列 
  localQueue = (LinkedList<Object[]>) frame.getLocalPanel().getQueue(); 
  // 从主窗体获取FTP面板的下载队列 
  ftpQueue = (LinkedList<Object[]>) frame.getFtpPanel().getQueue(); 
  initComponent(); // 初始化窗体界面 
  // 创建定时器,每间隔1秒执行队列刷新任务 
  queueTimer = new Timer(1000, new ActionListener() { 
   /** 
    * 定时器的事件处理方法 
    */ 
   @Override 
   public void actionPerformed(ActionEvent e) { 
    if (localQueue.size() + ftpQueue.size() == queueTable 
      .getRowCount()) // 如果队列大小没有改变 
     return; // 结束本方法,不做任何操作 
    refreshQueue(); // 否则刷新显示队列信息的表格数据 
   } 
  }); 
 } 
 
 private void initComponent() { 
  BorderLayout cardLayout = new BorderLayout(); 
  setLayout(cardLayout); 
  columns = new String[] { "任务名称", "方向", "主机", "执行状态" }; 
  queueTable.setModel(new DefaultTableModel(new Object[][] {}, columns)); 
  queueTable.getTableHeader().setReorderingAllowed(false); 
  scrollPane.setViewportView(queueTable); 
  cardLayout.layoutContainer(scrollPane); 
  add(scrollPane, CENTER); 
 
  JToolBar controlTool = new JToolBar(JToolBar.VERTICAL); 
  controlTool.setRollover(true); 
  controlTool.setFloatable(false); 
  JButton upButton = new JButton("上移"); 
  upButton.setActionCommand("up"); 
  upButton.addActionListener(this); 
  JButton downButton = new JButton("下移"); 
  downButton.setActionCommand("down"); 
  downButton.addActionListener(this); 
  stopButton = new JToggleButton("暂停"); 
  stopButton.setActionCommand("stop&start"); 
  stopButton.addActionListener(this); 
  JButton delButton = new JButton("删除"); 
  delButton.setActionCommand("del"); 
  delButton.addActionListener(this); 
  JButton clearButton = new JButton("清空"); 
  clearButton.setActionCommand("clear"); 
  clearButton.addActionListener(this); 
  controlTool.setLayout(new BoxLayout(controlTool, BoxLayout.Y_AXIS)); 
  controlTool.add(upButton); 
  controlTool.add(downButton); 
  controlTool.add(stopButton); 
  controlTool.add(delButton); 
  controlTool.add(clearButton); 
  add(controlTool, EAST); 
 } 
 
 public void startQueue() { 
  ftpClient = frame.getFtpClient(); 
  queueTimer.start(); 
 } 
 
 /** 
  * 界面上按钮的事件处理方法 
  */ 
 @Override 
 public void actionPerformed(ActionEvent e) { 
  final String command = e.getActionCommand(); 
  if (command.equals("stop&start")) {// 处理暂停按钮事件 
   if (stopButton.isSelected()) { 
    stop = true; 
    stopButton.setText("继续"); 
   } else { 
    stop = false; 
    stopButton.setText("暂停"); 
   } 
  } 
  // 处理上移和下移按钮事件 
  if (command.equals("up") || command.equals("down")) { 
   up_Down_Action(command); // 调用处理上移和下移动作的方法 
  } 
  if (command.equals("del")) {// 处理删除按钮的事件 
   int row = queueTable.getSelectedRow(); // 获取显示队列的表格的当前选择行 
   if (row < 0) 
    return; 
   // 获取选择行的第一个表格单元值 
   Object valueAt = queueTable.getValueAt(row, 0); 
   // 如果选择内容是File类的对象 
   if (valueAt instanceof File) { 
    File file = (File) valueAt; 
    int size = localQueue.size(); // 获取上传队列大小 
    for (int i = 0; i < size; i++) { // 遍历上传队列 
     if (localQueue.get(i)[0].equals(file)) { 
      localQueue.remove(i); // 从上传队列中删除文件对象 
     } 
    } 
   } else if (valueAt instanceof String) { // 如果选择的是字符串对象 
    String fileStr = (String) valueAt; 
    int size = ftpQueue.size(); // 获取上传队列的大小 
    for (int i = 0; i < size; i++) { // 遍历上传队列 
     // 获取上传队列中的文件对象 
     FtpFile ftpFile = (FtpFile) ftpQueue.get(i)[0]; 
     if (ftpFile.getAbsolutePath().equals(fileStr)) { 
      ftpQueue.remove(i); // 从上传队列中删除该文件对象 
     } 
    } 
   } 
   refreshQueue(); // 刷新队列列表 
  } 
  if (command.equals("clear")) { // 处理清空按钮的事件 
   localQueue.clear(); // 调用本地面板的队列的clear()方法 
   ftpQueue.clear(); // 调用FTP面板的队列的clear()方法 
  } 
 } 
 
 /** 
  * 队列任务的上移和下移动作处理方法 
  * 
  * @param command 
  *   上移或下移命令 
  */ 
 private void up_Down_Action(final String command) { 
  int row = queueTable.getSelectedRow(); // 获取队列表格的当前选择行号 
  if (row < 0) 
   return; 
  // 获取当前选择行的第一个单元值 
  Object valueAt = queueTable.getValueAt(row, 0); 
  // 获取当前选择行的第二个单元值作为判断上传或下载方向的依据 
  String orientation = (String) queueTable.getValueAt(row, 1); 
  if (orientation.equals("上传")) { // 如果是上传任务 
   String value = ((File) valueAt).getAbsolutePath(); 
   int size = localQueue.size(); 
   for (int i = 0; i < size; i++) { // 遍历上传队列 
    Object[] que = localQueue.get(i); 
    File file = (File) que[0]; 
    // 从队列中,遍历到选择的上传任务的文件对象 
    if (file.getAbsolutePath().equals(value)) { 
     ListSelectionModel selModel = queueTable 
       .getSelectionModel(); // 获取表格的选择模型 
     selModel // 设置选择模型的单选模式 
       .setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     int dsize = localQueue.size(); // 获取本地上传队列的大小 
     int drow = queueTable.getSelectedRow();// 获取队列表格的当前选择行号 
     int queueVal = localQueue.size() - dsize; 
 
     int next = -1; 
     int selIndex = -1; 
     if (command.equals("up")) { 
      if (i < 1) // 限制选择范围 
       return; 
      selIndex = drow - queueVal - 1; 
      next = i - 1; 
     } else { 
      if (i >= size - 1) // 限制选择范围 
       return; 
      selIndex = drow - queueVal + 1; 
      next = i + 1; 
     } 
     // 交换连个队列位置的任务 
     Object[] temp = localQueue.get(next); 
     localQueue.set(next, que)



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java语言实现简单FTP软件 辅助功能模块FTP站点管理实现(12)
  • Java语言实现简单FTP软件 FTP上传下载管理模块实现(11)
  • Java语言实现简单FTP软件 FTP远程文件管理模块实现(10)
  • Java语言实现简单FTP软件 FTP本地文件管理模块实现(9)
  • Java语言实现简单FTP软件 FTP连接管理模块实现(8)
  • Java语言实现简单FTP软件 FTP上传下载队列窗口实现(7)
  • Java语言实现简单FTP软件 FTP软件远程窗口实现(6)
  • Java语言实现简单FTP软件 FTP软件本地窗口实现(5)
  • Java语言实现简单FTP软件 FTP软件主界面(4)
  • Java语言实现简单FTP软件 FTP软件效果图预览之上传功能(3)

相关文章

  • 2017-09-06Nashorn jdk8新增的ScriptEngine官方文档翻译及代码示例
  • 2017-05-28关于Java中的IO流总结(推荐)
  • 2017-05-28Java Annotation详解及实例代码
  • 2017-05-28java数据结构与算法之插入排序详解
  • 2017-05-28JAVA 中解密RSA算法JS加密实例详解
  • 2017-05-28Java实现迅雷地址转成普通地址实例代码
  • 2017-05-28java 面试题闰年判断详解及实例
  • 2017-05-28JavaEE微框架Spring Boot深入解读
  • 2017-05-28详解spring中使用solr的代码实现
  • 2017-05-28支付宝开发平台之第三方授权登录与获取用户信息

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java常用数字工具类 大数乘法、加法、减法运算(2)
    • JVM 方法调用之静态分派(详解)
    • java application maven项目打自定义zip包实例(推荐)
    • 详解使用Spring MVC统一异常处理实战
    • SpringMVC4+MyBatis+SQL Server2014实现数据库读写分离
    • SpringMVC接收页面表单参数
    • Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例
    • Eclipse 开发java 出现Failed to create the Java Virtual Machine错误解决办法
    • java web开发中大量数据导出Excel超时(504)问题解决
    • Java常用字符串工具类 字符串智能截取(3)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有