📄 desktop.java
字号:
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 + -