📄 mainwindow.java
字号:
package com.network.flashget;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.tree.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;
import java.net.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class MainWindow extends JFrame//implements ActionListener
{
JPanel panelTotal = new JPanel();
JPanel panelLeft = new JPanel();
JPanel panelRight = new JPanel();
JPanel panelRightTop = new JPanel();
static JPanel panelRightBottom = new JPanel();
static JPanel subPanel = new JPanel();
JTextField txt = new JTextField("就绪");
CardLayout topCard = new CardLayout();
static CardLayout bottomCard = new CardLayout();
static LinkedList runningList = new LinkedList();
static LinkedList statusList = new LinkedList();
boolean gridFlag = false;
boolean detailFlag = true;
boolean logoFlag = true;
boolean tableDownFlag = true;
boolean tableFinishedFlag = false;
boolean tableDeletedFlag = false;
static int index = 0;
static int currentIndex = 0;
Logo logo = null;
JSplitPane jspLeft=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
JSplitPane jspRight=new JSplitPane(JSplitPane.VERTICAL_SPLIT);
//定义表状控件-------------------------------------------------------
static JTable tableDown = null;
JScrollPane jscrDown = null;
static DefaultTableModel tableDownModel = null;
String[] tableDownName = {"状态", "文件名","文件长度", "完成数", "百分比", "存取路径", "块数", "URL"};
String[][] dataDown = new String[0][8];
//定义表状控件-------------------------------------------------------
static JTable tableDownDetail = null;
JScrollPane jscrDownDetail = null;
static DefaultTableModel tableDownDetailModel = null;
String[] tableDownDetailName = {"线程", "文件名", "起始点", "终止点", "完成数", "URL"};
String[][] dataDownDetail = new String[10][6];
JTable tableFinished;
JScrollPane jscrFinished = null;
static DefaultTableModel tableFinishedModel = null;
String[] tableFinishedName = {"状态", "文件名", "大小","注释"};
String[][] dataFinished = new String[0][4];
JTable tableFinishedDetail;
String[] tableFinishedDetailName = {"名称", "值"};
static DefaultTableModel tableFinishedDetailModel = null;
JScrollPane jscrFinishedDetail = null;
String[][] dataFinishedDetail =
{
{"*注释",""},{"*引用页",""},{"*续传",""},{"*本地文件",""},
{"*大小",""},{"*完成",""},{"*URL",""}
};
JTable tableDeleted;
JScrollPane jscrDeleted = null;
static DefaultTableModel tableDeletedModel = null;
String[] tableDeletedName = {"状态", "文件名", "大小","注释"};
String[][] dataDeleted = new String[0][4];
static JTable tableDeletedDetail;
String[] tableDeletedDetailName = {"名称", "值"};
static DefaultTableModel tableDeletedDetailModel = null;
JScrollPane jscrDeletedDetail = null;
String[][] dataDeletedDetail =
{
{"*注释",""},{"*引用页",""},{"*续传",""},{"*本地文件",""},
{"*大小",""},{"*完成",""},{"*URL",""}
};
//表状控件定义结束-----------------------------------------------------------
//定义树状组件-----------------------------------------------------------------
JTree tree;
DefaultTreeModel model;
DefaultMutableTreeNode root, child0, child1,child2;
//树状控件定义结束--------------------------------------------------------
//定义菜单组件---------------------------------------
JPopupMenu popUp = new JPopupMenu();
JMenuBar menuBar = new JMenuBar();
JMenu[] menus = {new JMenu("文件"),new JMenu("察看"),
new JMenu("任务"),new JMenu("搜索"),
new JMenu("帮助")
};
JMenuItem popMenuItems[] =
{new JMenuItem("开始"),new JMenuItem("暂停"),
new JMenuItem("全部开始"),new JMenuItem("全部暂停"),
new JMenuItem("重新添加到下载列表"),new JMenuItem("删除"),
new JMenuItem("退出")
};
JMenuItem[][] items =
{
{new JMenuItem("新建数据库"), new JMenuItem("打开旧数据库"),
},
{new JMenuItem("详细情况"),new JMenuItem("悬浮窗"),
new JMenuItem("网格")
},
{new JMenuItem("新建任务"),new JMenuItem("全部开始"),
new JMenuItem("全部暂停")
},
{new JMenuItem("MP3"),new JMenuItem("软件"),
new JMenuItem("游戏")
},
{new JMenuItem("用户手册"),new JMenuItem("关于QuickShare")
}
};
//菜单控件定义结束--------------------------------------------------------
JToolBar toolBar;
static int taskCount = 0;
static LinkedList taskDownList = new LinkedList();
static LinkedList taskFinishedList = new LinkedList();
static LinkedList taskDeletedList = new LinkedList();
MainWindow()
{
this.addWindowListener(new Windowclose());
int width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()-100;
int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight()-100;
this.setSize(width,height);
this.setTitle("QuickShare");
logo = new Logo();
panelTotal.setBackground(Color.white);
panelLeft.setBackground(Color.white);
panelRight.setBackground(Color.white);
panelRightTop.setBackground(Color.white);
panelRightBottom.setBackground(Color.white);
txt.setBackground(Color.LIGHT_GRAY);
txt.setEditable(false);
//构造树状控件-------------------------------------------------------------
root = new DefaultMutableTreeNode("QuickShare");
tree = new JTree(root);
model = (DefaultTreeModel)tree.getModel();
child0 = new DefaultMutableTreeNode("正在下载");
child1 = new DefaultMutableTreeNode("已下载");
child2 = new DefaultMutableTreeNode("已删除");
model.insertNodeInto(child2, root, 0);
model.insertNodeInto(child1, root, 0);
model.insertNodeInto(child0, root, 0);
//树状控件构造结束------------------------------------------------------------
//构造Table控件------------------------------------------------------------------
tableDownModel = new DataModel(dataDown, tableDownName);
tableDown =new JTable(tableDownModel);
tableDown.setBackground(Color.white);
tableDown.setSelectionBackground(new Color(100,150,250));
tableDown.setGridColor(Color.pink);
tableDown.setShowGrid(false);
tableDown.setPreferredSize(new Dimension(700,600));
jscrDown = new JScrollPane(tableDown,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableDownDetailModel = new DataModel(dataDownDetail, tableDownDetailName);
tableDownDetail =new JTable(tableDownDetailModel);
tableDownDetail.setBackground(Color.white);
tableDownDetail.setGridColor(Color.pink);
tableDownDetail.setShowVerticalLines(false);
tableDownDetail.setEnabled(false);
tableDownDetail.setPreferredSize(new Dimension(700,600));
jscrDownDetail = new JScrollPane(tableDownDetail,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableFinishedModel = new DataModel(dataFinished, tableFinishedName);
tableFinished =new JTable(tableFinishedModel);
tableFinished.setBackground(Color.white);
tableFinished.setSelectionBackground(new Color(100,150,250));
tableFinished.setGridColor(Color.pink);
tableFinished.setShowGrid(false);
tableFinished.setPreferredSize(new Dimension(700,600));
jscrFinished = new JScrollPane(tableFinished,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableFinishedDetailModel = new DataModel(dataFinishedDetail,tableFinishedDetailName);
tableFinishedDetail = new JTable(tableFinishedDetailModel);
tableFinishedDetail.setGridColor(Color.pink);
tableFinishedDetail.setPreferredSize(new Dimension(700,600));
jscrFinishedDetail = new JScrollPane(tableFinishedDetail,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableDeletedModel = new DataModel(dataDeleted, tableDeletedName);
tableDeleted =new JTable(tableDeletedModel);
tableDeleted.setBackground(Color.white);
tableDeleted.setSelectionBackground(new Color(100,150,250));
tableDeleted.setPreferredSize(new Dimension(700,600));
jscrDeleted = new JScrollPane(tableDeleted,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
tableDeletedDetailModel = new DataModel(dataDeletedDetail,tableDeletedDetailName);
tableDeletedDetail = new JTable(tableDeletedDetailModel);
tableDeleted.setSelectionBackground(new Color(100,150,250));
tableDeleted.setShowVerticalLines(false);
tableDeleted.setPreferredSize(new Dimension(700,600));
jscrDeletedDetail = new JScrollPane(tableDeletedDetail,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//Table控件构造结束------------------------------------------------------------------
//构造菜单控件-----------------------------------------------------------------------
for(int i = 0; i < menus.length; i++)
{
for(int j = 0;j<items[i].length;j++)
{
menus[i].add(items[i][j]);
items[i][j].addActionListener(new MenuItemListener());
}
}
for(int i = 0; i < menus.length; i++)
{
menuBar.add(menus[i]);
}
menus[0].addSeparator();
JMenuItem m = new JMenuItem("退出");
m.addActionListener(new MenuItemListener());
menus[0].add(m);
this.setJMenuBar(menuBar);
for(int i = 0;i < popMenuItems.length-1;i++)
{
popMenuItems[i].addActionListener(new PopupActionListener());
popUp.add(popMenuItems[i]);
}
popUp.addSeparator();
popMenuItems[popMenuItems.length-1].addActionListener(new PopupActionListener());
popUp.add(popMenuItems[popMenuItems.length-1]);
//构造菜单控件结束---------------------------------------------------------
//-------设置窗口位置居中---------------------------------------------------------------
int locationX=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-getSize().getWidth())/2;
int locationY=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-getSize().getHeight())/2;
setLocation(locationX,locationY);
//--------------------------------------------------------------------------------------
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(panelTotal,"Center");
cp.add(txt,"South");
//设置右上角组件------------------------------------------------------------
panelRightTop.setLayout(topCard);
panelRightTop.add(jscrDown,"down");
panelRightTop.add(jscrFinished,"finished");
panelRightTop.add(jscrDeleted,"deleted");
//设置结束-------------------------------------------------------------------
//设置右下角组件-------------------------------------------------------------
panelRightBottom.setLayout(bottomCard);
panelRightBottom.add(subPanel,"default");
panelRightBottom.add(jscrFinishedDetail,"finished");
panelRightBottom.add(jscrDownDetail,"down");
panelRightBottom.add(jscrDeletedDetail,"deleted");
//设置结束--------------------------------------------------------------------
panelTotal.setLayout(new BorderLayout());
panelTotal.add(jspRight);
panelTotal.add(jspLeft);
jspLeft.add(tree);
jspLeft.setRightComponent(jspRight);
jspRight.setTopComponent(panelRightTop);
jspRight.setBottomComponent(panelRightBottom);
jspRight.setDividerLocation(350);
tree.addMouseListener(new TreeListener());
tableDown.addMouseListener(new TableListener());
tableFinished.addMouseListener(new TableListener());
tableDeleted.addMouseListener(new TableListener());
tableDown.addMouseListener(new PopupListener());
tableFinished.addMouseListener(new PopupListener());
tableDeleted.addMouseListener(new PopupListener());
this.show();
}
/**
*用于关闭窗口时,能够关闭程序
**/
class Windowclose extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
dispose();
exitSave();
System.exit(0);
}
}
public static void main(String[] args)
{
//设置风格外观-------------------------------------------------------
try
{
String look = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(look);
}
catch(Exception e)
{
e.printStackTrace();
}
new MainWindow();
//读取文件------------------------------------------------------------
LoadFile load = new LoadFile(0);
load.loadInfo();
load.addToTabel();
File file = new File(".\\Info\\index.txt");
if(file.exists())
{
load.loadIndex();
System.out.println("index"+index);
}
System.out.println(taskFinishedList.size());
}
/**
*树状组件事件侦听
**/
class TreeListener implements MouseListener
{
public void mouseClicked(MouseEvent e)
{
DefaultMutableTreeNode clicked = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if(clicked.equals(root))
{
//
}
if(clicked.equals(child0))
{
topCard.show(panelRightTop,"down");
tableDown.clearSelection();
bottomCard.show(panelRightBottom,"default");
tableDownFlag = true;
tableFinishedFlag = false;
tableDeletedFlag = false;
}
if(clicked.equals(child1))
{
topCard.show(panelRightTop,"finished");
tableFinished.clearSelection();
bottomCard.show(panelRightBottom,"default");
tableDownFlag = false;
tableFinishedFlag = true;
tableDeletedFlag = false;
}
if(clicked.equals(child2))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -