mainframe.java
来自「一款JAVA开发的类迅雷的多线程下载系统,希望对大家有帮助」· Java 代码 · 共 1,626 行 · 第 1/5 页
JAVA
1,626 行
package downfile;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.ListSelectionModel;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
//import snoozesoft.systray4j.*;
public class MainFrame extends JFrame implements TreeSelectionListener//,SysTrayMenuListener
{
JMenuBar topmenubar = new JMenuBar(); //顶部菜单
JMenu filemenu = new JMenu("文件(F)");
JMenu setupmenu = new JMenu("常用设置(S)");
JMenu helpmenu = new JMenu("帮助(H)");
JMenuItem newmenuitem = new JMenuItem("新建任务(N)");
JMenuItem startmenuitem = new JMenuItem("开始");
JMenuItem stopmenuitem = new JMenuItem("暂停");
JMenuItem detmenuitem = new JMenuItem("删除");
JMenuItem openmenuitem = new JMenuItem("打开");
JMenuItem openmenumenuitem = new JMenuItem("打开目录");
JMenuItem closemenuitem = new JMenuItem("退出程序(E)");
JMenuItem setupmenuitem = new JMenuItem("常用设置(C)");
JCheckBoxMenuItem guanjimenuitem = new JCheckBoxMenuItem("智能关机");
JCheckBoxMenuItem xinximenuitem = new JCheckBoxMenuItem("信息窗口");
JCheckBoxMenuItem spemenuitem = new JCheckBoxMenuItem("悬浮窗口");
JMenuItem helpmenuitem = new JMenuItem("帮助信息");
JMenuItem aboutmenuitem = new JMenuItem("关于本人");
//树弹出菜单
JPopupMenu treepopup = new JPopupMenu();
JMenuItem newleibie= new JMenuItem("新建类别");
JMenuItem openleimenu = new JMenuItem("打开类目录");
JMenuItem detleibie = new JMenuItem("删除");
JMenuItem qingkong = new JMenuItem("清空垃圾箱");
JMenuItem shuxing = new JMenuItem("属性");
//table弹出菜单
JPopupMenu tablepopup = new JPopupMenu();
JMenuItem startmenu = new JMenuItem("任务开始");
JMenuItem stopmenu = new JMenuItem("任务暂停");
JMenuItem openmenu = new JMenuItem("打开文件");
JMenuItem openmenumenu = new JMenuItem("打开目录");
JMenuItem redownmenu = new JMenuItem("重新下载");
JMenuItem detmenu = new JMenuItem("删除文件");
//顶部按钮
JToolBar toolbar;
JButton newbutton = new JButton(); //新建下载任务按钮
JButton startbutton = new JButton(); //开始下载任务的按钮
JButton stopbutton = new JButton(); //暂停下载任务的按钮
JButton setupbutton = new JButton(); //打开设置界面的按钮
JButton openbutton = new JButton(); //打开当前选中的文件
JButton detbutton = new JButton(); //删除当前选中的文件
JButton openmenubutton = new JButton(); //打开当前选中的文件所在的目录
JButton guanjibutton = new JButton(); //当所有的下载完成后自动关机
JButton helpbutton = new JButton(); //帮助按钮
//底部按钮
JButton Spebutton = new JButton(); //是否显示悬浮窗
JButton infobutton = new JButton(); //是否显示文件信息
JButton button1 = new JButton(); //功能待加
JButton button2 = new JButton(); //功能待加
JButton button3 = new JButton(); //功能待加
//下载状态图标
ImageIcon downed = new ImageIcon(getImage("images/downed.png"));
ImageIcon downing = new ImageIcon(getImage("images/start.png"));
ImageIcon pause = new ImageIcon(getImage("images/pause.png"));
ImageIcon detpic = new ImageIcon(getImage("images/errer.png"));
ImageIcon xinad = new ImageIcon(getImage("images/xinad.jpg"));
//加载按钮上的图标
ImageIcon startpic = new ImageIcon(getImage("images/start.png"));
ImageIcon stoppic = new ImageIcon(getImage("images/stop.png"));
ImageIcon setuppic = new ImageIcon(getImage("images/setup.png"));
ImageIcon openpic = new ImageIcon(getImage("images/open.png"));
ImageIcon openmenupic = new ImageIcon(getImage("images/openmenu.png"));
ImageIcon guanjipic = new ImageIcon(getImage("images/guanji.png"));
ImageIcon helppic = new ImageIcon(getImage("images/help.png"));
ImageIcon newpic = new ImageIcon(getImage("images/new.png"));
ImageIcon spepic = new ImageIcon(getImage("images/lock.png"));
ImageIcon infopic = new ImageIcon(getImage("images/info.png"));
ImageIcon button1pic = new ImageIcon(getImage("images/column.png"));
ImageIcon button2pic = new ImageIcon(getImage("images/bottom.png"));
ImageIcon button3pic = new ImageIcon(getImage("images/sousuo.png"));
//托盘菜单
// static String toolTips = "java下载器";
// static SysTrayMenuIcon icons = new SysTrayMenuIcon("images/main.ico");
// static SysTrayMenu menu = new SysTrayMenu(icons,toolTips);
static JLabel yunxingtime = new JLabel("程序已运行:");
static JLabel renwushulb = new JLabel("正在运行的任务数:");
static JLabel shuominglb = new JLabel(); //底部按钮说明标签
static JTree tree;
JScrollPane jsptree;
static String nodeName = null;
static DefaultTreeModel treeModel = null;
TreeModel root = new TreeModel("java下载器任务管理");
static TreeModel node1 = new TreeModel("正在下载",false);
static TreeModel node2 = node2 = new TreeModel("已经下载");
static TreeModel node3 = node3 = new TreeModel("垃圾箱",false);
static TreeModel selectionNode = null; //当前被选中的类别
static ArrayList leadNodeList = new ArrayList(); //类别List
static ArrayList alldownloadList = new ArrayList();
static DownloadsTableModel tablemodel;
static JTable table;
DownloadsTableModel tablemodel1 = null; //正在下载JTable模式
DownloadsTableModel dettablemodel = null; //垃圾箱JTable模式
JScrollPane scrollpane;
Download selectedDownload; //JTable中当前被选中对应的DOWNLOAD对象
boolean clearing = false;
JSplitPane jsp = new JSplitPane();
JSplitPane tablejsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
JTabbedPane tabbedpane = new JTabbedPane(JTabbedPane.BOTTOM);
JComboBox sousuojcb = new JComboBox(); //搜索网站选择
JTextField sousuojtf = new JTextField(20); //搜索内容
JButton sousuojbn = new JButton("搜索"); //搜索按钮
boolean read = true;
static MainFrame main;
HelpDialog help = new HelpDialog(main,"帮助"); //帮助对话框
static AboutDialog about = new AboutDialog(main,"关于本人"); //关于对话框
XinJianDialog xinjian; //新建下载任务窗口
XinJianLeiBieDialog xinjianleibie; //新建类别窗口
ShuXingDialog shuxingdialog; //类别属性窗口
SetUpDialog setup = new SetUpDialog(main,"设置"); //设置窗口
// ShutDown shutdown; //智能关机
public MainFrame(){
super("java下载器");
//设置程序图标
Image iconmain = getImage("images/main.jpg");
setIconImage(iconmain);
//文件项目添加
buildMenu();
setJMenuBar(topmenubar);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JPanel northpanel = new JPanel();
northpanel.setLayout(new BorderLayout());
panel.add(northpanel,BorderLayout.NORTH);
//顶部工具栏初始化
toolbar = new JToolBar();
toolbar.setFloatable(false);
toolbar.add(newbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(startbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(stopbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(setupbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(openbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(detbutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(openmenubutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(guanjibutton);
toolbar.addSeparator(new Dimension(15,0));
toolbar.add(helpbutton);
//搜索栏面板
JPanel sousuopanel = new JPanel();
sousuopanel.setLayout(new FlowLayout(FlowLayout.CENTER));
sousuopanel.add(sousuojtf);
sousuopanel.add(sousuojcb);
sousuopanel.add(sousuojbn);
//工具栏和搜索面板所在的面板
JPanel buttonpanel = new JPanel();
buttonpanel.setLayout(new BorderLayout());
northpanel.add(buttonpanel,BorderLayout.CENTER);
buttonpanel.add(toolbar,BorderLayout.WEST);
buttonpanel.add(sousuopanel,BorderLayout.EAST);
//顶部广告栏
JScrollPane adpanelScrollPane = new JScrollPane();
JEditorPane adpanel = new JEditorPane();
adpanel.setEditable(false);
adpanel.setLayout(new BorderLayout());
adpanelScrollPane.getViewport().add(adpanel);
northpanel.add(adpanelScrollPane,BorderLayout.NORTH);
URLClassLoader urlLoader1 = (URLClassLoader)this.getClass().getClassLoader();
URL url1 = null;
url1 = urlLoader1.findResource("doc/ad.htm");
try {
adpanel.setPage(url1);
} catch (IOException e) {
e.printStackTrace();
}
adpanel.addHyperlinkListener(new HyperlinkListener(){
public void hyperlinkUpdate(HyperlinkEvent arg0) {
}
});
//中间显示JTREE和JTABLE的面板
JPanel centerpanel = new JPanel();
centerpanel.setLayout(new BorderLayout());
panel.add(centerpanel,BorderLayout.CENTER);
//底部面板 添加底部工具栏和JLABEL
JPanel bottompanel = new JPanel();
bottompanel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(bottompanel,BorderLayout.SOUTH);
//底部工具栏
JToolBar bottomtoolbar = new JToolBar();
bottomtoolbar.setFloatable(false);
bottomtoolbar.add(Spebutton);
bottomtoolbar.add(infobutton);
bottomtoolbar.add(button1);
bottomtoolbar.add(button2);
bottomtoolbar.add(button3);
bottomtoolbar.add(shuominglb);
bottomtoolbar.addSeparator(new Dimension(150,0));
bottomtoolbar.add(yunxingtime);
bottomtoolbar.addSeparator(new Dimension(50,0));
bottomtoolbar.add(renwushulb);
bottompanel.add(bottomtoolbar);
//表格信息
readNode1();
buildTable();
//树型结构的实现
buildTree();
//为树添加弹出菜单
buildTreepopup();
//为table添加弹出菜单
buildTablepopup();
//搜索下拉列表
sousuojcb.addItem("迅雷");
sousuojcb.addItem("google");
sousuojcb.addItem("yahoo");
sousuojcb.addItem("一搜");
sousuojcb.addItem("百度");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?