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

📄 primeclient.java

📁 服务器模块主要负责分配计算任务
💻 JAVA
字号:
package primecruncher;import net.jxta.document.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class PrimeClient extends JPanel implements ResultListener{//实体并不分配给其他的对等节点//为素数检索服务起代理的作用    private Dispatcher primeservice=null;    private JTextArea results;    private JTextArea status;    //为素数查询服务提供图形化的客户端    public PrimeClient(Dispatcher disp){        primeservice=disp;        buildGUI();    }    /*********************************************************************/    //创建客户端界面    private void buildGUI(){        setLayout(new BorderLayout());        JPanel topPanel=new JPanel();        topPanel.setLayout(new FlowLayout());        final JTextField fromField=new JTextField(10);        final JTextField toField=new JTextField(10);        topPanel.add(new JLabel("From:"));        topPanel.add(fromField);        topPanel.add(new JLabel("To:"));        topPanel.add(toField);        status=new JTextArea(5,20);        results=new JTextArea(20,20);        JScrollPane scrollPane=new JScrollPane(results);        JScrollPane statusScroll=new JScrollPane(status);        JPanel centerPanel=new JPanel();        centerPanel.setLayout(new BorderLayout());        centerPanel.add(statusScroll,BorderLayout.NORTH);        centerPanel.add(scrollPane,BorderLayout.CENTER);        JButton goButton=new JButton("开始");        JButton exitButton=new JButton("Exit");        JPanel buttPanel=new JPanel();        buttPanel.add(goButton);        buttPanel.add(exitButton);        add(topPanel,BorderLayout.NORTH);        add(centerPanel,BorderLayout.CENTER);        add(buttPanel,BorderLayout.SOUTH);        goButton.addActionListener(new ActionListener(){            public void actionPerformed(ActionEvent e){       //对goButton作事件监听                String low=fromField.getText();                String high=toField.getText();                results.setText("");                try{int l=Integer.parseInt(low);                 //将字符串类型转换为整型                    int h=Integer.parseInt(high);                //将字符串类型转换为整型                    primeservice.processPrimes(l,h,PrimeClient.this); //调用Dispacher类的processPrimes()方法,实现任务的创建并分发########                }catch(NumberFormatException e1){                    status.setText("Wrong args");                }            }        });        exitButton.addActionListener(new ActionListener(){            public void actionPerformed(ActionEvent e){         //对exitButton作事件监听                System.exit(0);            }        });    }    /*****************************************************************/    private void displayStats(ComputeStats stats){        //status.append("Stats for job " + stats.getJobID());        ComputeStats.NodeStat[] ns=stats.getNodeStats();        for(int i=0;i < ns.length;i++){            status.append(ns[i].getNodeID()+"computed segment");            status.append(new Integer(ns[i].getLow()).toString()+"-");            status.append(new Integer(ns[i].getHi()).toString()+"in");            status.append(new Double((ns[i].getComputeTime())/1000).toString()+"seconds.\n");        }    }    /*****************************************************************/    private void displayResult(Map res){        String resString=(String)res.get(ServiceConstants.RESULTSTRING);//如果有太多的结果,不显示        if(resString.length()>100000)            return;        StringTokenizer tk=new StringTokenizer(resString,",");        int i=0;        while(tk.hasMoreTokens()){            results.append(tk.nextToken()+"   ");            if(i>25){                results.append("\n");                i=0;            }            i++;        }    }   /*****************************************************************/   public static void main(String[] args){       Dispatcher disp=new Dispatcher();      //将客户端作为一个对等组创建       PrimeClient app=new PrimeClient(disp);       JFrame f=new JFrame("Prime cruncher");       f.addWindowListener(new WindowAdapter(){           public void windowClosing(WindowEvent e){               System.exit(0);           }       });       Toolkit tk=Toolkit.getDefaultToolkit();       Dimension dim=tk.getScreenSize();       int appWidth=(int)(dim.getWidth()/2);       int appHeight=(int)(dim.getHeight()/2);       app.setPreferredSize(new Dimension(appWidth,appHeight));       int x=(int)dim.getWidth()/2-(int)appWidth/2;       int y=(int)dim.getHeight()/2-(int)appHeight/2;       f.getContentPane().add(app);       f.pack();       f.setLocation(x,y);       f.setVisible(true);   }   /*****************************************************************/   public void resultEvent(Map result){     displayStats((ComputeStats)result.get(ServiceConstants.JOBSTATS));     displayResult(result);   }}

⌨️ 快捷键说明

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