第五天

package wl;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Frame;
import java.awt.MenuBar;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class ProcessApp extends JFrame {
    static JFrame f = new JFrame("Process");
    static JPanel panel = new JPanel();
     static Object[][] cellData = {{"名称","PID","优先级","状态","用户名","cpu","内存","描述"}};
        static String[] columnNames = {"col1","col2","col3","col4","col5","col6","col7","col8"};
     static JTable table = new JTable(cellData, columnNames);
    ProcessApp() {// init frame
        f.setVisible(true);
        f.setSize(1000, 800);
        f.setLayout(new BorderLayout());

    }

    void initMenu() {// init menu
        JMenuBar menubar = new JMenuBar();
        JMenu[] menus = new JMenu[] { new JMenu("文件"), new JMenu("选项"), new JMenu("查看") };
        for (int i = 0; i < menus.length; i++) {
            menubar.add(menus[i]);
        }
        f.setJMenuBar(menubar);
    }

    void initToolBar() {
        JToolBar toolbar = new JToolBar();
        JButton[] buttons = new JButton[] { new JButton("应用"), new JButton("进程"), new JButton("性能"), new JButton("联网"),
                new JButton("用户"), new JButton("性能") };
        for (int i = 0; i < buttons.length; i++) {
            toolbar.add(buttons[i]);
        }
        toolbar.setBackground(Color.white);
        f.getContentPane().add(toolbar, BorderLayout.NORTH);
    }

    void initPanel() {

        panel.setBackground(Color.WHITE);
        f.getContentPane().add(panel, BorderLayout.CENTER);
    }

    void initTable() {
          //(1)名称,优先级,cpu,内存,磁盘,网络,GPU的使用情况,端口,用户名,状态,描述
         
            table.setSize((int) (panel.getWidth()*0.2),40);
            table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS );
            String[] headers= {"名称","PID","优先级","状态","用户名","cpu","内存","描述"};
            DefaultTableModel model =new DefaultTableModel(cellData, headers) {
                 public boolean isCellEditable(int row, int column) {
                   return false;
                 }
            };
            table = new JTable(model);
            panel.add(table);
          
    }
    
    void setTable() {
    
        TableModel tableModel = table.getModel();
        //"名称","PID","优先级","状态","用户名","cpu","内存","描述"
        List<processModel> processs=process.Getprocess();
        for(processModel p:processs) {
             String[] arr=new String[8];
                arr[0]=p.getName();
                arr[1]=p.getPID();
                arr[2]=p.getPrio();
                arr[3]=p.getState();
                arr[4]=p.getUser();
                arr[5]=Double.toString(p.getB_cpu());
                arr[6]=Double.toString(p.getB_memory());
                arr[7]=p.getDescribe();    
                
        // 添加数据到表格
        ((DefaultTableModel) tableModel).addRow(arr);
       
    }
    // 更新表格
    table.invalidate();
    //table.setSize(panel.getWidth()-20, panel.getHeight());
    JScrollPane jsp;
    jsp = new JScrollPane(table);
    panel.add(jsp);
 
  
    }

    public static void main(String[] args) {
        ProcessApp p = new ProcessApp();
        p.initMenu();
        p.initToolBar();
        p.initPanel();
        p.initTable();
        p.setTable();
        System.out.println("finish");
    }
}
package wl;

public class processModel {
   // "名称","PID","状态","用户名","cpu","内存","磁盘","网络","描述"
   private String name;//"名称
   private String PID;// 进程id
   private String state;//进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
   private String user;//进程所有者
   private double b_cpu;//进程所有者
   private double b_memory;//进程使用的物理内存百分比
   private double memory;//进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
 
   private String describe;
   private String  prio;
   
public String getPrio() {
    return prio;
}
public void setPrio(String prio) {
    this.prio = prio;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPID() {
    return PID;
}
public void setPID(String pID) {
    PID = pID;
}
public String getState() {
    return state;
}
public void setState(String state) {
    this.state = state;
}
public String getUser() {
    return user;
}
public void setUser(String user) {
    this.user = user;
}

public double getMemory() {
    return memory;
}
public void setMemory(double memory) {
    this.memory = memory;
}

public String getDescribe() {
    return describe;
}
public void setDescribe(String describe) {
    this.describe = describe;
}
public double getB_cpu() {
    return b_cpu;
}
public void setB_cpu(double b_cpu) {
    this.b_cpu = b_cpu;
}
public double getB_memory() {
    return b_memory;
}
public void setB_memory(double b_memory) {
    this.b_memory = b_memory;
}
@Override
public String toString() {
    return "processModel [name=" + name + ", PID=" + PID + ", state=" + state + ", user=" + user + ", b_cpu=" + b_cpu
            + ", b_memory=" + b_memory + ", memory=" + memory + ", describe=" + describe + ", prio=" + prio + "]";
}



   
}
package wl;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class process {
    
    //get process infomation
    public static List<processModel> Getprocess() {
        
        Runtime runtime = Runtime.getRuntime();
        List<String> tasklist = new ArrayList<String>();
        java.lang.Process process = null;
        List<processModel> processs=new ArrayList<processModel>();
        int count = 0; // 统计进程数
        try {
            /*
             * 
             * 自适应执行查询进程列表命令
             * 
             */
            Properties prop = System.getProperties();
            // 获取操作系统名称
            boolean is=false;
            String os = prop.getProperty("os.name");
            if (os != null && os.toLowerCase().indexOf("linux") > -1) {
                // 1.适应与linux

                BufferedReader reader = null;
                // 显示所有进程
                //"名称","PID","优先级","状态","用户名","cpu","内存","磁盘","网络","描述"
                process = Runtime.getRuntime().exec("top -b -n 1");
                reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

                String line = null;

                while ((line = reader.readLine()) != null) {
                    if(line.startsWith("   PID")) {
                        is=true;
                        line=reader.readLine();
                    }
                    if(is==true) {
                        
                        Pattern p = Pattern.compile("\\s+");
                        Matcher m = p.matcher(line);
                        line= m.replaceAll(",");
                        
                
                    String[] strs=line.split(",");
                   
                    processModel pro=new processModel();
                    pro.setPID(strs[1]);
                    pro.setUser(strs[2]);
                    pro.setPrio(strs[3]);
                    pro.setMemory(Double.valueOf(strs[4]));
                    pro.setState(strs[8]);
                    pro.setB_cpu(Double.valueOf(strs[9]));
                    pro.setB_memory(Double.valueOf(strs[10]));
                    pro.setName(strs[12]);
                    System.out.println(pro.toString());
                    processs.add(pro);
                    }
                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return processs;

    }

    
    public static void main(String[] args) throws Exception {
        System.out.println(Getprocess());;
        
        //installTool("iotop");
    }
}

 

posted @ 2019-05-09 10:26  我是一个粉刷匠^~^  阅读(148)  评论(0编辑  收藏  举报