⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desktop.java

📁 这是一份标准的课程设计文档
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package desktop;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.UIManager;
import javax.swing.tree.*;
import java.io.*;
import javax.swing.table.*;
import java.util.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;

import Global.*;
import myException.*;
import Manager.*;


public class Desktop extends JWindow implements ActionListener,TreeSelectionListener//,MouseListener
{
	//虚拟硬盘有关控件声明开始
	private	JTree					VHD_tree;
	private DefaultMutableTreeNode	VHD_root;
	private DefaultTreeModel		VHD_treeModel;
	private JScrollPane				VHD_JS_tree;
	//private	JButton					VHD_add;
	private DetailTables			VHD_table;
	private JScrollPane				VHD_JS_table;
	private JSplitPane				VHD_split;
	private	JPopupMenu				VHD_contextmenu;
	private	JMenuItem				VHD_menu1;
	private	JMenuItem				VHD_menu2;
	private	JPopupMenu				VHD_contextmenu1;
	private	JMenuItem				VHD_menu11;
	private	JMenuItem				VHD_menu22;
	private static JProgressBar		VHD_ProcessBar;
	private JPanel					VHD_JP_PB;
	private static JLabel			VHD_Label;
	private JLabel					VHD_Label1;
	//虚拟硬盘有关控件声明结束
	//虚拟内存有关控件声明开始
	private static DetailTables		VMEM_table;
	private JScrollPane				VMEM_JS_table;
	private static JProgressBar		VMEM_ProcessBar;
	private JPanel					VMEM_JP_PB;
	private static JLabel			VMEM_Label;
	private JLabel					VMEM_Label1;
	//虚拟内存有关控件声明结束
	//虚拟系统有关对象声明开始
	private static Manager.HardDiskManager	HDM;
	private static Manager.MemoryManager MM;
	private	static CPUManager CPUM;
	//虚拟系统有关对象声明结束
	//显示进程相关控件开始
	private static ProcessTables	PROC_table;
	private int[]					PROC_selectcounts;
	private JScrollPane				PROC_JS_table;
	private	JPopupMenu				PROC_contextmenu;
	private	JMenuItem				PROC_menu1;
	private	JMenuItem				PROC_menu2;
	private	JMenuItem				PROC_menu3;
	private	JMenuItem				PROC_menu4;
	private JMenu					PROC_menu5;
	private	JMenuItem				PROC_menu5_1;
	private	JMenuItem				PROC_menu5_2;
	private	JMenuItem				PROC_menu5_3;
	private	JMenuItem				PROC_menu5_4;
	private	JMenuItem				PROC_menu5_5;
	//显示进程相关控件结束
	//虚拟显示器相关控件开始
	private static JTextArea		SCR_Screen;
	private static JScrollPane		SCR_JS_Screen;
	//虚拟显示器相关控件结束
	private static JTextArea		state_show;
	private JScrollPane				state_JS;
	private JSplitPane				VHD_VMEM_split;
	private JSplitPane				VHD_VMEM_USED_split;
	private JSplitPane				VHD_VMEM_USED_PROC_split;
	private JSplitPane				VHD_VMEM_USED_PROC_BT_split;
	private JSplitPane				VHD_VMEM_USED_PROC_BT_SHOW_split;
	private JSplitPane				VHD_VMEM_USED_PROC_BT_SHOW_JP_split;
	private JSplitPane				TEM_split;
	private JPanel					USED_Panel;
	private JPanel					BT_JP;
	private JPanel					SHOW_JP;
	private JLabel					STATE_JL;
	private JLabel					SHOW_JL;
	private JPanel					STATE_SHOW_JP;
	////////////////////////////////////////////////////////////////
	private DetailTable		detailTable			= new DetailTable();
	private JScrollPane		sp					= new JScrollPane(detailTable);
	private JSplitPane			split;
	private FileSystemView		fileSystemView		=FileSystemView.getFileSystemView();
	private File				file				= new File("系统硬盘");
	private FileNode			root				=new FileNode(file);
	private DefaultTreeModel	treeModel			=new DefaultTreeModel(root);
	private JTree				tree				= new JTree(treeModel);
	private	JPopupMenu			HD_contextmenu;
	private	JMenuItem			HD_menu1;
	////////////////////////////////////////////////////////////////
	JButton				Clear_Screen				=	new JButton("清屏");
	JButton				Clear_State					=	new JButton("清屏");
	JButton				exit;
	Rectangle			r;
	Dimension			screenSize;
	int lx_button=0,ly_button=0;
    int lx_pressed,ly_pressed;
	JPanel				JP_contentPane;
	BorderLayout borderLayout1 = new BorderLayout();
	public Desktop(int time,int blocks,int blocksize,int hdsize,int timeblock,int tablecounts,int pages)
	{
		try	  
		{
			Global.init(time, blocks, blocksize, hdsize, timeblock, tablecounts, pages);
			jbInit();
			CPUM.run();
		}
		catch(Exception e) 
		{
			e.printStackTrace();
		}
	}
	/*public static void main(String args[])
        {
			try {
			LookAndFeel alloy = new com.incors.plaf.alloy.AlloyLookAndFeel();
			UIManager.setLookAndFeel(alloy);
			Font			font				=new Font("宋体",Font.PLAIN,12);
			String names[]={"Label","CheckBox","PopupMenu","TextPane",
                      "MenuItem","CheckBoxMenuItem","JRadioButtonMenuItem",
                      "ComboBox","Button","Tree","ScrollPane","TabbedPane",
                      "EditorPane","TitledBorder","Menu","TextArea","OptionPane",
                      "MenuBar","ToolBar","ToggleButton","ToolTip","ProgressBar",
                      "TableHeader","Panel","List","ColorChooser","PasswordField",
                      "TextField","Table","Label","Viewport","RadioButtonMenuItem",
                      "RadioButton"};
			for(int i=0;i<names.length;i++)UIManager.put(names[i]+".font",font);
			UIManager.put("Label.foreground",Color.black);
			UIManager.put("Border.foreground",Color.black);
			UIManager.put("TitledBorder.titleColor",Color.black);
			new Desktop();
			}catch(Exception e){
				e.printStackTrace();
			}
        }*/
	//Component initialization
	private void jbInit() throws Exception  
	{
		screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		//控件初始化开始
		JP_contentPane		=			new JPanel(null);
		SCR_Screen			=			new JTextArea();
		SCR_JS_Screen		=			new JScrollPane(SCR_Screen);
		exit				=			new JButton("退出系统");
		VMEM_Label1			=			new JLabel("虚拟内存");
		String	VMEM_columns[]	=		new String[2];
		VMEM_columns[0]		=			"地址";
		VMEM_columns[1]		=			"内容";
		VMEM_table			=			new	DetailTables(VMEM_columns);
		VMEM_JS_table		=			new JScrollPane(VMEM_table);
		VMEM_ProcessBar		=			new JProgressBar(0,Global.BLOCKS);
		VMEM_ProcessBar.setForeground(Color.red);
		VMEM_JP_PB			=			new JPanel();
		VMEM_Label			=			new JLabel("虚拟内存容量:0/"+Global.BLOCKS);
		VMEM_JP_PB.add(VMEM_Label,"East");
		VMEM_JP_PB.add(VMEM_ProcessBar,"Center");

		ReFlashTable();
		state_show			=			new JTextArea();
		state_JS			=			new JScrollPane(state_show);

		VHD_Label1			=			new JLabel("虚拟硬盘");
		VHD_ProcessBar		=			new JProgressBar(0,Global.HD_SIZE);
		VHD_root			=			new DefaultMutableTreeNode("虚拟硬盘");
		VHD_tree			=			new JTree(VHD_root);
		VHD_treeModel		=			(DefaultTreeModel)VHD_tree.getModel();
		VHD_JS_tree			=			new JScrollPane(VHD_tree);
		//VHD_add				=			new JButton("添加作业进硬盘");
		String	VHD_Columns[]	=		new String[4];
		VHD_Columns[0]		=			"ID";
		VHD_Columns[1]		=			"名称";
		VHD_Columns[2]		=			"链表序号";
		VHD_Columns[3]		=			"文件大小";
		VHD_table			=			new DetailTables(VHD_Columns);
		VHD_JS_table		=			new JScrollPane(VHD_table);
		VHD_split			=			new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,VHD_JS_tree,VHD_JS_table);
		VHD_split.setDividerSize(6);
		VHD_split.setDividerLocation(150);
        VHD_split.setOneTouchExpandable(true);

/////////////////////////////////////////////////////////////////////////////////////
//		资源浏览器
		tree.addTreeExpansionListener(new MyExpandsionListener());
		tree.setCellRenderer(new MyTreeCellRenderer());
		tree.addTreeSelectionListener(this);
		tree.setSelectionRow(0);
		tree.setComponentOrientation(ComponentOrientation.UNKNOWN);
		
		split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,new JScrollPane(tree),sp);
		split.setDividerSize(6);
		split.setDividerLocation(150);
		split.setOneTouchExpandable(true);
		sp.getViewport().setBackground(Color.white);

		TEM_split=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,split,VHD_split);
		TEM_split.setDividerSize(6);
		TEM_split.setDividerLocation(150);
		TEM_split.setOneTouchExpandable(true);

		HD_contextmenu		=			new JPopupMenu();
		HD_menu1			=			new JMenuItem("添加进程进虚拟硬盘");
		HD_contextmenu.add(HD_menu1);
		detailTable.add(HD_contextmenu);
		HD_menu1.addActionListener(this);
		detailTable.addMouseListener
		(
			new MouseAdapter()
			{
				public void mouseReleased(MouseEvent e)
				{
					if(e.isPopupTrigger())
					{
						HD_contextmenu.show((Component)e.getSource(),e.getX(),e.getY());
					}
				}
			}
		);
///////////////////////////////////////////////////////////

		VHD_VMEM_split		=			new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,TEM_split,VMEM_JS_table);
		VHD_VMEM_split.setDividerSize(6);
		VHD_VMEM_split.setDividerLocation(screenSize.width/2);

		VHD_contextmenu		=			new JPopupMenu();
		VHD_menu1			=			new JMenuItem("运行作业");
		VHD_menu2			=			new JMenuItem("删除作业");
		VHD_contextmenu1	=			new JPopupMenu();
		VHD_menu11			=			new JMenuItem("运行作业");
		VHD_menu22			=			new JMenuItem("删除作业");
		VHD_contextmenu.add(VHD_menu1);
		VHD_contextmenu.add(VHD_menu2);
		VHD_tree.add(VHD_contextmenu);
		VHD_contextmenu1.add(VHD_menu11);
		VHD_contextmenu1.add(VHD_menu22);
		VHD_table.add(VHD_contextmenu1);
		VHD_JP_PB			=			new JPanel();
		VHD_Label			=			new JLabel("虚拟硬盘容量:0/"+Global.HD_SIZE);
		VHD_JP_PB.add(VHD_Label,"East");
		VHD_JP_PB.add(VHD_ProcessBar,"Center");

		USED_Panel			=			new JPanel(new GridLayout(1,2));
		USED_Panel.add(VHD_JP_PB);
		USED_Panel.add(VMEM_JP_PB);

		VHD_VMEM_USED_split	=			new	JSplitPane(JSplitPane.VERTICAL_SPLIT,true,VHD_VMEM_split,USED_Panel);
		VHD_VMEM_USED_split.setDividerSize(3);
		VHD_VMEM_USED_split.setDividerLocation(screenSize.height/2-30);

		String	PROC_columns[]	=		new String[4];
		PROC_columns[0]		=			"进程ID";
		PROC_columns[1]		=			"状态";
		PROC_columns[2]		=			"优先级";
		PROC_columns[3]		=			"进度";
		PROC_table			=			new ProcessTables(PROC_columns);
		PROC_JS_table		=			new JScrollPane(PROC_table);
		PROC_contextmenu	=			new JPopupMenu();
		PROC_menu1			=			new JMenuItem("挂起进程");
		PROC_menu2			=			new JMenuItem("唤醒进程");
		PROC_menu3			=			new JMenuItem("结束进程");
		PROC_menu4			=			new JMenuItem("跟踪显示");
		PROC_menu5			=			new JMenu("设置优先级");
		PROC_menu5_1		=			new JMenuItem("0");
		PROC_menu5_2		=			new JMenuItem("1");
		PROC_menu5_3		=			new JMenuItem("2");
		PROC_menu5_4		=			new JMenuItem("3");
		PROC_menu5_5		=			new JMenuItem("4");
		PROC_menu5.add(PROC_menu5_1);
		PROC_menu5.add(PROC_menu5_2);
		PROC_menu5.add(PROC_menu5_3);
		PROC_menu5.add(PROC_menu5_4);
		PROC_menu5.add(PROC_menu5_5);
		PROC_menu1.setEnabled(false);
		PROC_menu2.setEnabled(false);
		PROC_menu3.setEnabled(false);
		PROC_menu5.setEnabled(false);
		PROC_contextmenu.add(PROC_menu1);
		PROC_contextmenu.add(PROC_menu2);
		PROC_contextmenu.add(PROC_menu3);
		PROC_contextmenu.add(PROC_menu4);
		PROC_contextmenu.add(PROC_menu5);
		PROC_table.add(PROC_contextmenu);

		VHD_VMEM_USED_PROC_split	=	new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,VHD_VMEM_USED_split,PROC_JS_table);
		VHD_VMEM_USED_PROC_split.setDividerSize(3);
		VHD_VMEM_USED_PROC_split.setDividerLocation(screenSize.height/2);

		BT_JP				=			new JPanel(null);
		BT_JP.add(exit);
		//BT_JP.add(VHD_add);
		BT_JP.add(VHD_Label1);
		BT_JP.add(VMEM_Label1);
		VHD_Label1.setBounds(screenSize.width/4-50,0,100,30);
		exit.setBounds(screenSize.width/2-75,0,150,30);
		VMEM_Label1.setBounds((screenSize.width*3)/4-50,0,100,30);
		//VHD_add.setBounds(360,0,150,30);
		VHD_VMEM_USED_PROC_BT_split	=	new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,BT_JP,VHD_VMEM_USED_PROC_split);
		VHD_VMEM_USED_PROC_BT_split.setDividerSize(3);
		VHD_VMEM_USED_PROC_BT_split.setDividerLocation(30);

		STATE_JL			=			new JLabel("状态信息窗口");
		SHOW_JL				=			new JLabel("虚拟显示器");
		//Clear_Screen
		//Clear_State
		STATE_SHOW_JP		=			new JPanel(null);
		STATE_SHOW_JP.add(STATE_JL);
		STATE_SHOW_JP.add(SHOW_JL);
		STATE_SHOW_JP.add(Clear_Screen);
		STATE_SHOW_JP.add(Clear_State);
		STATE_JL.setBounds(0,0,100,20);//screenSize
		SHOW_JL.setBounds(screenSize.width/2,0,100,20);
		Clear_State.setBounds(screenSize.width/4-50,0,100,20);
		Clear_Screen.setBounds((screenSize.width*3)/4+50,0,100,20);

		VHD_VMEM_USED_PROC_BT_SHOW_split	=	new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,VHD_VMEM_USED_PROC_BT_split,STATE_SHOW_JP);
		VHD_VMEM_USED_PROC_BT_SHOW_split.setDividerSize(3);
		VHD_VMEM_USED_PROC_BT_SHOW_split.setDividerLocation(screenSize.height/2+150);

		
		SHOW_JP			=				new JPanel(new GridLayout(1,2));
		SHOW_JP.add(state_JS);
		SHOW_JP.add(SCR_JS_Screen);
		VHD_VMEM_USED_PROC_BT_SHOW_JP_split=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,VHD_VMEM_USED_PROC_BT_SHOW_split,SHOW_JP);
		VHD_VMEM_USED_PROC_BT_SHOW_JP_split.setDividerSize(3);
		VHD_VMEM_USED_PROC_BT_SHOW_JP_split.setDividerLocation(screenSize.height/2+180);
		
		//控件初始化结束
		//虚拟系统初始化区开始
		HDM				=	new Manager.HardDiskManager();
		MM				=	new MemoryManager();
		CPUM			=	new CPUManager();
		//虚拟系统初始化区结束
		//添加控件事件区开始
		exit.addActionListener(this);
		//VHD_add.addActionListener(this);
		PROC_menu1.addActionListener(this);
		PROC_menu2.addActionListener(this);
		PROC_menu3.addActionListener(this);
		PROC_menu4.addActionListener(this);
		PROC_menu5_1.addActionListener(this);
		PROC_menu5_2.addActionListener(this);
		PROC_menu5_3.addActionListener(this);
		PROC_menu5_4.addActionListener(this);
		PROC_menu5_5.addActionListener(this);
		VHD_menu1.addActionListener(this);
		VHD_menu2.addActionListener(this);
		VHD_menu11.addActionListener(this);
		VHD_menu22.addActionListener(this);
		Clear_Screen.addActionListener(this);
		Clear_State.addActionListener(this);
		//为进程列表添加右击事件
		PROC_table.addMouseListener
		(
			new MouseAdapter()
			{
				public void mouseReleased(MouseEvent e)
				{
					if(e.isPopupTrigger())
					{
						PROC_selectcounts	=	getCountsOfProc();
						if(PROC_selectcounts.length>0)
						PROC_contextmenu.show((Component)e.getSource(),e.getX(),e.getY());
					}
				}
			}
		);
		//为虚拟硬盘树形目录添加右击事件
		VHD_tree.addMouseListener
		(
			new MouseAdapter()
			{
				public void mouseReleased(MouseEvent e)
				{
					if(e.isPopupTrigger())
					{
						VHD_contextmenu.show((Component)e.getSource(),e.getX(),e.getY());
					}
				}
			}
		);
		//为虚拟硬盘列表目录添加右击事件
		VHD_table.addMouseListener
		(
			new MouseAdapter()
			{
				public void mouseReleased(MouseEvent e)
				{
					if(e.isPopupTrigger())
					{
						VHD_contextmenu1.show((Component)e.getSource(),e.getX(),e.getY());
					}
				}
			}
		);
		//添加控件事件区结束

		//添加控件区开始

		JP_contentPane.add(VHD_VMEM_USED_PROC_BT_SHOW_JP_split);

		//添加控件区结束

		//控件定位区开始

		VHD_VMEM_USED_PROC_BT_SHOW_JP_split.setBounds(0,0,screenSize.width,screenSize.height);

		//控件定位区结束


		Container Desktop_frame=getContentPane();
		Desktop_frame.add(JP_contentPane);

		GraphicsEnvironment ge =	GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice		gd =	ge.getDefaultScreenDevice();
        if ( gd.isFullScreenSupported() )
            gd.setFullScreenWindow(this);
        else
            System.out.println("Unsupported full screen.");
		this.setVisible(true);
		
	}
	//按钮动作事件
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()	==	exit)
		{
			System.exit(0);
		}
		/*else if(e.getSource()	==	VHD_add)
		{
			this.addJobToVHD("root\\job.txt");
		}*/
		else if(e.getSource()	==	HD_menu1)
		{
			this.HDAddJobToVHD();
		}
		else if(e.getSource()==VHD_menu1)
		{
			this.addJobToMEM();
			
		}
		else if(e.getSource()==PROC_menu1)
		{
			//挂起进程函数
			hangUPProcess();
		}
		else if(e.getSource()==PROC_menu2)
		{
			//起动进程

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -