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

📄 desktop.java

📁 这是一份标准的课程设计文档
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	/**************************************************
	*功能描述:	挂起一个进程
	***************************************************/
	public void hangUPProcess()
	{
		DetailTableModel	model	=	(DetailTableModel)PROC_table.getModel();
		int[] selectcount	=	PROC_table.getSelectedRows();
		if(selectcount.length!=0)
		{
			for(int i=0;i<selectcount.length;i++)
			{
				String state	=	model.getValueAt(selectcount[i],1).toString();
				if(state.equals("运行")||state.equals("就绪"))
				{
					String Sid	=	model.getValueAt(selectcount[i],0).toString();
					int id		=	Integer.parseInt(Sid);
					CPUM.runToHangUP(id);
					PROC_table.setValue(selectcount[i],1,"挂起");
				}//end if
				else 
				{
					//选中项已经处于挂起状态
				}//end else
			}//end for
		}//end if
		else 
		{
			//在列表中没有选中某一项
		}//end else
	}
	/************************************************
	*功能描述:	唤醒进程
	************************************************/
	public void hangUPToRun()
	{
		DetailTableModel	model	=	(DetailTableModel)PROC_table.getModel();
		int[] selectcount	=	PROC_table.getSelectedRows();
		if(selectcount.length!=0)
		{
			for(int i=0;i<selectcount.length;i++)
			{
				String state	=	model.getValueAt(selectcount[i],1).toString();
				if(state.equals("挂起"))
				{
					String Sid	=	model.getValueAt(selectcount[i],0).toString();
					int id		=	Integer.parseInt(Sid);
					CPUM.hangUPToRun(id);
					PROC_table.setValue(selectcount[i],1,"就绪");
				}//end if
				else 
				{
					//选中项不处于挂起状态
				}//end else
			}//end for
		}//end if
		else 
		{
			//在列表中没有选中某一项
		}//end else
	}
	/***********************************************************
	*功能描述:	结束进程
	************************************************************/
	public void stopProcess()
	{
		DetailTableModel	model	=	(DetailTableModel)PROC_table.getModel();
		int[] selectcount	=	PROC_table.getSelectedRows();
		if(selectcount.length!=0)
		{
			for(int i=0;i<selectcount.length;i++)
			{
				String state	=	model.getValueAt(selectcount[i],1).toString();
				if(state.equals("就绪"))
				{
					String Sid	=	model.getValueAt(selectcount[i],0).toString();
					int id		=	Integer.parseInt(Sid);
					//CPUM.hangUPToRun(id);
					//PROC_table.setValue(selectcount[i],1,"就绪");
					removeProcess(id);
					Global.PCBLIST.Remove(id);
					MM.Delete(id);
				}//end if
				else 
				{
					//选中项不处于挂起状态
				}//end else
			}//end for
		}//end if
		else 
		{
			//在列表中没有选中某一项
		}//end else
	}
	/**********************************************************
	*功能描述:获取进程列表中选中的记录序号
	***********************************************************/
	public int[] getCountsOfProc()
	{
		DetailTableModel	model	=	(DetailTableModel)PROC_table.getModel();
		int[] selectcount	=	PROC_table.getSelectedRows();
		return selectcount;
	}
	/******************************************
	*功能描述:设置进程的优先级别
	*参数说明:priority:优先级(0,1,2,3,4)
	********************************************/
	public void setPriority(int priority)
	{
		//PROC_selectcounts
		DetailTableModel	model	=	(DetailTableModel)PROC_table.getModel();
		if(PROC_selectcounts.length!=0)
		{
			for(int i=0;i<PROC_selectcounts.length;i++)
			{
				String Sid	=	model.getValueAt(PROC_selectcounts[i],0).toString();
				String state=	model.getValueAt(PROC_selectcounts[i],1).toString();
				int id	=	Integer.parseInt(Sid);
				if(state.equals("运行")||state.equals("就绪"))
				{
					Global.PCBLIST.setValue(id,2,priority);
					PROC_table.setValue(PROC_selectcounts[i],2,""+Global.PCBLIST.getValue(id,2));
				}
				else if(state.equals("挂起"))
				{
					Global.PCBINTERUPT.setValue(id,2,priority);
					PROC_table.setValue(PROC_selectcounts[i],2,""+Global.PCBINTERUPT.getValue(id,2));
				}
				else if(state.equals("等待"))
				{
					Global.PCBWAITLIST.setValue(id,2,priority);
					PROC_table.setValue(PROC_selectcounts[i],2,""+Global.PCBWAITLIST.getValue(id,2));
				}
				
			}
		}
	}
	/*****************************************************
	*功能描述:	设置进程列表是否光标跟随
	*****************************************************/
	public void setFollow(boolean tf)
	{
		CPUManager.follow	=	tf;
	}
	/************************************************
	*功能描述:	刷新虚拟内存
	**************************************************/
	public static void ReFlashTable()
	{
		VMEM_table.RemoveAll();
		for(int i=0;i<Global.BLOCKS;i++)
		{
			for(int j=0;j<Global.PAGE_SIZE;j++)
			{
				String MemAddTem[]	=	new String[2];
				MemAddTem[0]		=	""+i+":"+j;
				MemAddTem[1]		=	Global.MEMORY.getValue(i,j+1);
				VMEM_table.addRow(MemAddTem);
			}
		}
		//VMEM_table.setRowsBGColor(0,2,2);
	}
	/************************************************
	*功能描述:	设置进程列表的某一行选中
	*参数描述:	当前运行作业ID
	**************************************************/
	public static void PSSetSelectRow(int id)
	{
		int row	=	PROC_table.getIndex(id);
		if(row<0||id==0)
			row=0;
		else 
		{
			PROC_table.setRowSelectionInterval(row, row);
			PSScrollToRow(row-2);
		}
	}
	/**************************************************
	*功能描述:	进程列表滚动条自动滚动
	***************************************************/
	public static void PSScrollToRow(int row)
	{
		if(row<0)
			row	=	0;
		int value = PROC_table.getRowHeight()*row+1;
		((JScrollPane)PROC_table.getParent().getParent()).getVerticalScrollBar().setValue(value);
	}
	/************************************************
	*功能描述:	设置虚拟内存表的某一行选中
	**************************************************/
	public static void setSelectRow(int row)
	{
		VMEM_table.setRowSelectionInterval(row, row);
		scrollToRow(row-5);
	}
	/**************************************************
	*功能描述:	滚动条自动滚动
	***************************************************/
	public static void scrollToRow(int row)
	{
		if(row<0)
			row	=	0;
		int value = VMEM_table.getRowHeight()*row+1;
		((JScrollPane)VMEM_table.getParent().getParent()).getVerticalScrollBar().setValue(value);
	}
	/**************************************************
	*功能描述:	在状态显示窗口显示文字
	***************************************************/
	public static void addTextToStateTextField(String s)
	{
		state_show.append(s);
	}
	/****************************************************
	*功能描述:	设置内存TABLE里某一行到某一行的背景颜色
	*参数说明:	row1:起始行	row2:终止行	counts:TABLE和列数
	*****************************************************/
	public static void setMEMTableRowsBGColor(int row1,int row2,int counts)
	{
		VMEM_table.setRowsBGColor(row1,row2,counts);
	}
	/*****************************************************
	*功能描述:	添加一条记录到进程表
	******************************************************/
	public static void addRowToProcessTable(String[] value)
	{
		PROC_table.addRow(value);
	}
	/*******************************************************
	*功能描述:	设置进程的进度
	*参数说明:	id:作业ID	value:作业当前运行到的地址
	*******************************************************/
	public static void setCellValueToProcessTable(int id,int value)
	{
		int row	=	PROC_table.getIndex(id);
		int col	=	3;
		int percent	=	(value*100)/(Global.HDTABLE.getJobSize(id)-1);
		String Svalue	=	""+percent;
		PROC_table.setValue(row,col,Svalue);
	}
	/*******************************************************
	*功能描述:	设置进程的状态
	*参数说明:	id:作业ID	value:进程的状态信息
	*******************************************************/
	public static void setCellValueToProcessTable(int id,String value)
	{
		int row	=	PROC_table.getIndex(id);
		int col	=	1;
		PROC_table.setValue(row,col,value);
	}
	/*******************************************************
	*功能描述:	从进程表中移除一条进程
	*参数说明:	id:作业ID	
	*******************************************************/
	public static void removeProcess(int id)
	{
		int row	=	PROC_table.getIndex(id);
		PROC_table.removeRow(row);
	}
	/*********************************************************
	*功能描述:	显示内存使用量
	*********************************************************/
	public static void setMEMUsed(int used)
	{
		
		VMEM_ProcessBar.setValue(used);
	}
	/*********************************************************
	*功能描述:	显示硬盘使用量
	*********************************************************/
	public static void setHDUsed()
	{
		int used=HDM.GetUsedSize();
		VHD_ProcessBar.setValue(used);
	}
	/**************************************************
	*功能描述:	在虚拟显示器窗口显示文字
	***************************************************/
	public static void addTextToScreenTextField(String s)
	{
		SCR_Screen.append(s);
	}
	public static void setVHDLabel(String s)
	{
		VHD_Label.setText(s);
	}
	public static void setVMEMLabel(String s)
	{
		VMEM_Label.setText(s);
	}

//////////////////////////////////////////////////////////////////////////////////
	public void valueChanged(TreeSelectionEvent e){
    Object obj=tree.getLastSelectedPathComponent();
    if(obj==null)return;
    else detailTable.setParent(((FileNode)obj).getFile());
 }

class MyTreeCellRenderer extends DefaultTreeCellRenderer {
   public MyTreeCellRenderer() {}
   public Component getTreeCellRendererComponent(JTree tree,Object value,
             boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus) {
       super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
       setIcon(fileSystemView.getSystemIcon(((FileNode)value).getFile()));
       return this;
   }
 }
 class MyExpandsionListener implements TreeExpansionListener {
   public MyExpandsionListener() {}
   public void treeExpanded(TreeExpansionEvent event) {
       if (tree.getLastSelectedPathComponent()==null){return;}
       tree.setCursor(new Cursor(Cursor.WAIT_CURSOR));
       TreePath path = event.getPath();
       FileNode node = (FileNode)path.getLastPathComponent();
       node.explore();
       treeModel.nodeStructureChanged(node);
       tree.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
   }
   public void treeCollapsed(TreeExpansionEvent event) {}
 }
 class FileNode extends DefaultMutableTreeNode {
     private boolean explored = false;
     public FileNode(File file)  { setUserObject(file); }
     public boolean getAllowsChildren() { return isDirectory(); }
     public boolean isLeaf()     { return !isDirectory();}
     public File getFile()        { return (File)getUserObject(); }
     public boolean isExplored() { return explored; }
     public void setExplored(boolean b){ explored=b;}
     public boolean isDirectory() { return getFile().isDirectory();}
     public String toString() {
         File file = (File)getUserObject();
         String filename = file.toString();
         int index = filename.lastIndexOf(File.separator);
         return (index != -1 && index != filename.length()-1)
                   ? filename.substring(index+1) : filename;
     }
     public void explore() {
         if(!isExplored()) {
             File file = getFile();
             File[] children = file.listFiles();
             if(children==null||children.length==0)return;
             for(int i=0; i < children.length; ++i)
             {
                  File f=children[i];
                  if(f.isDirectory())add(new FileNode(children[i]));
             }
             explored = true;
         }
    }
 }
 class DetailTable extends JTable{
       DetailsTableModel model=new DetailsTableModel();
       public DetailTable(){
           setModel(model);
           setShowGrid(false);
           TableColumnModel colModel = getColumnModel();
           for (int i=0;i<3;i++)
             colModel.getColumn(i).setCellRenderer(new DetailsTableCellRenderer());
           setRowHeight(18);
           this.addMouseListener(new MouseAdapter(){
               public void mouseClicked(MouseEvent e) {
                   if(e.getClickCount()==2){
                      for (int i = 0; i <getRowCount(); i++) {
                           if(getCellRect(i,0,true).contains(e.getPoint())){
                               openSelect();
                               break;
                           }
                       }
                   }
               }
           });
       }
       public void openSelect(){
           Object obj=model.getValueAt(getSelectedRow(),0);
           if(obj==null)return;
           File f=(File)obj;
           if(f.isDirectory()){
               //expand tree
			   setParent(f);
           }else{
               //open select file
           }
       }
       public void setParent(File parent){
           model.removeAllRows();
           File list[]=parent.listFiles();
           if(list==null)return;
           Vector vDir=new Vector(),vFile=new Vector();
           for (int i = 0; i < list.length; i++) {
               if(list[i].isDirectory())vDir.add(list[i]);
               else vFile.add(list[i]);
           }
           sortElements(vFile);
           sortElements(vDir);
           for (int i = 0; i < vDir.size(); i++)model.addFile((File)vDir.elementAt(i));
           for (int i = 0; i < vFile.size(); i++)model.addFile((File)vFile.elementAt(i));
       }
       public void sortElements(Vector v)
        {
           for(int i=0;i<v.size();i++)
           {
                int k=i;
                for(int j=i+1;j<v.size();j++){
                    File fa=(File)v.elementAt(j);
                    File fb=(File)v.elementAt(k);
                    if(fileSystemView.getSystemDisplayName(fa).toLowerCase().compareTo(
                         fileSystemView.getSystemDisplayName(fb).toLowerCase())<0)k=j;
                }
                if(k!=i)swap(k,i,v);
           }
        }
        private void swap(int loc1,int loc2,Vector v){
            Object tmp=v.elementAt(loc1);
            v.setElementAt(v.elementAt(loc2),loc1);
            v.setElementAt(tmp,loc2);
        }
       class DetailsTableModel extends DefaultTableModel {
           public DetailsTableModel() {
               addColumn("名称");
               addColumn("大小");
               addColumn("修改时间");
           }
           public void addFile(File f){
               addRow(new Object[]{f,new Double(f.length()/1024),
                    new java.sql.Date(f.lastModified())});
           }
           public void removeAllRows(){
               while(getRowCount()!=0) removeRow(0);
           }
           public boolean isCellEditable(int row, int column) {return false;}
       }
       class DetailsTableCellRenderer extends DefaultTableCellRenderer {
         DetailsTableCellRenderer() {}
         public Component getTableCellRendererComponent(JTable table, Object value,
                               boolean isSelected, boolean hasFocus, int row, int column) {
             if (column == 1){
                 setHorizontalAlignment(SwingConstants.TRAILING);
                 isSelected=hasFocus=false;
             }else if(column==2){
                 setHorizontalAlignment(SwingConstants.CENTER);
                 isSelected=hasFocus=false;
             }else setHorizontalAlignment(SwingConstants.LEADING);
             return super.getTableCellRendererComponent(
                         table, value, isSelected, hasFocus, row, column);
         }
         public void setValue(Object value) {
             setIcon(null);
             if (value instanceof File) {
                 File file = (File)value;
                 setText(fileSystemView.getSystemDisplayName(file));
                 setIcon(fileSystemView.getSystemIcon(file));
             }else{
                 super.setValue(value);
             }
         }
     }
   }
//////////////////////////////////////////////////////////////////////////////////
};

⌨️ 快捷键说明

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