nsg.java

来自「用JAVA做的一个NSG仿真程序,可以在一个工作空间里面画一个虚拟的网络环境,然」· Java 代码 · 共 1,788 行 · 第 1/5 页

JAVA
1,788
字号
                position.setText((new StringBuilder("Location : ( ")).append(j).append(", ").append(k).append(" )").toString());
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        env.addMouseListener(new MouseAdapter() {

            final NSG this$0;

            public void mousePressed(MouseEvent mouseevent)
            {
                int i = env.getHeight();
                int j = (int)((float)(mouseevent.getX() + env.shiftX) / env.scale);
                int l = (int)((float)((i - mouseevent.getY()) + env.shiftY) / env.scale);
                if(mouseevent.getButton() == 3)
                {
                    for(Iterator iterator = nodes.iterator(); iterator.hasNext();)
                    {
                        Node node = (Node)(Node)iterator.next();
                        if(Math.abs(node.getX() - j) < 10 && Math.abs(node.getY() - l) < 10)
                        {
                            src = node;
                            env.setSrc(node);
                            nodePopup.show(mouseevent.getComponent(), mouseevent.getX(), mouseevent.getY());
                            return;
                        }
                    }

                    if(src != null)
                    {
                        src = null;
                        env.clearSrc();
                        return;
                    } else
                    {
                        return;
                    }
                }
                for(Iterator iterator1 = nodes.iterator(); iterator1.hasNext();)
                {
                    Node node1 = (Node)(Node)iterator1.next();
                    if(Math.abs(node1.getX() - j) < 10 && Math.abs(node1.getY() - l) < 10)
                        if(src == null)
                        {
                            src = node1;
                            env.setSrc(node1);
                            return;
                        } else
                        {
                            dst = node1;
                            addConnection(src, dst);
                            src = null;
                            return;
                        }
                }

                if(src != null)
                {
                    src = null;
                    env.clearSrc();
                    return;
                }
                switch(nodePane.getSelectedIndex())
                {
                default:
                    break;

                case 0: // '\0'
                    addNode(j, l);
                    break;

                case 1: // '\001'
                    for(int k1 = 0; k1 < Integer.parseInt(h_chain_hops.getText()); k1++)
                    {
                        addNode(j, l);
                        j += Integer.parseInt(h_chain_dist.getText());
                    }

                    break;

                case 2: // '\002'
                    for(int l1 = 0; l1 < Integer.parseInt(v_chain_hops.getText()); l1++)
                    {
                        addNode(j, l);
                        l -= Integer.parseInt(v_chain_dist.getText());
                    }

                    break;

                case 3: // '\003'
                    int i2 = l;
                    for(int j2 = 0; j2 < Integer.parseInt(grid_column.getText()); j2++)
                    {
                        int i1 = i2;
                        for(int l2 = 0; l2 < Integer.parseInt(grid_row.getText()); l2++)
                        {
                            addNode(j, i1);
                            i1 -= Integer.parseInt(grid_dist.getText());
                        }

                        j += Integer.parseInt(grid_dist.getText());
                    }

                    break;

                case 4: // '\004'
                    for(int k2 = 0; k2 < Integer.parseInt(random_number.getText()); k2++)
                    {
                        int k = (int)(Math.random() * (double)Integer.parseInt(random_width.getText()));
                        int j1 = (int)(Math.random() * (double)Integer.parseInt(random_height.getText()));
                        addNode(k, j1);
                    }

                    break;
                }
                repaint();
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        JTabbedPane jtabbedpane = new JTabbedPane(1);
        jtabbedpane.setFont(systemFont);
        JPanel jpanel = new JPanel();
        jpanel.setBackground(Color.PINK);
        jpanel.setLayout(new BorderLayout(5, 5));
        JPanel jpanel1 = new JPanel();
        jpanel1.setLayout(new BorderLayout(5, 5));
        jpanel1.add(env, "Center");
        jpanel1.add(shiftX, "North");
        jpanel1.add(shiftY, "East");
        jpanel.add(jpanel1, "Center");
        jpanel.add(position, "South");
        jtabbedpane.addTab("environment", jpanel);
        jtabbedpane.addTab("tcl Script", new JScrollPane(tclArea));
        jtabbedpane.addTab("analysis", new JScrollPane(analysisArea));
        getContentPane().add(jtabbedpane, "Center");
        shiftX.addChangeListener(new ChangeListener() {

            final NSG this$0;

            public void stateChanged(ChangeEvent changeevent)
            {
                env.setShiftX(shiftX.getValue());
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        shiftY.addChangeListener(new ChangeListener() {

            final NSG this$0;

            public void stateChanged(ChangeEvent changeevent)
            {
                env.setShiftY(shiftY.getValue());
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
    }

    private void addNode(int i, int j)
    {
        dirty = true;
        normal_source.addItem(String.valueOf(sequence));
        normal_dest.addItem(String.valueOf(sequence));
        nodes.add(new Node(sequence, i, j));
        sequence++;
        node_no.setText(String.valueOf(nodes.size()));
        env.setNodes(nodes);
    }

    private void removeNode(Node node)
    {
        dirty = true;
        normal_source.removeItem(String.valueOf(src.getId()));
        normal_dest.removeItem(String.valueOf(src.getId()));
        for(Iterator iterator = links.iterator(); iterator.hasNext();)
        {
            Link link = (Link)(Link)iterator.next();
            if(link.getDst() == node || link.getSrc() == node)
            {
                if(link.getType() == 0)
                    ftp_no.setText(String.valueOf(Integer.parseInt(ftp_no.getText()) - 1));
                else
                if(link.getType() == 2)
                    cbr_no.setText(String.valueOf(Integer.parseInt(cbr_no.getText()) - 1));
                else
                    ping_no.setText(String.valueOf(Integer.parseInt(ping_no.getText()) - 1));
                iterator.remove();
            }
        }

        env.getNodes().remove(node);
        env.clearSrc();
        node_no.setText(String.valueOf(nodes.size()));
        env.repaint();
    }

    private void addConnection(Node node, Node node1)
    {
        dirty = true;
        switch(linkPane.getSelectedIndex())
        {
        case 0: // '\0'
            addFTP(node, node1, Double.parseDouble(ftp_start.getText()), Double.parseDouble(ftp_stop.getText()));
            ftp_no.setText(String.valueOf(Integer.parseInt(ftp_no.getText()) + 1));
            break;

        case 1: // '\001'
            addCBR(node, node1, Double.parseDouble(cbr_start.getText()), Double.parseDouble(cbr_stop.getText()), Integer.parseInt(cbr_frame_size.getText()), (String)cbr_rate.getSelectedItem());
            cbr_no.setText(String.valueOf(Integer.parseInt(cbr_no.getText()) + 1));
            break;

        case 2: // '\002'
            addPING(node, node1, Double.parseDouble(ping_start.getText()));
            ping_no.setText(String.valueOf(Integer.parseInt(ping_no.getText()) + 1));
            break;
        }
        env.setLinks(links);
        env.clearSrc();
    }

    private void addFTP(Node node, Node node1, double d, double d1)
    {
        dirty = true;
        Link link = new Link(node, node1, 0, d, d1);
        links.add(link);
    }

    private void addCBR(Node node, Node node1, double d, double d1, int i, 
            String s)
    {
        dirty = true;
        Link link = new Link(node, node1, 2, d, d1);
        link.setFrame_size(i);
        link.setRate(s);
        links.add(link);
    }

    private void addPING(Node node, Node node1, double d)
    {
        dirty = true;
        Link link = new Link(node, node1, 1, d, 0.0D);
        links.add(link);
    }

    private void createSetupPanel()
    {
        JPanel jpanel = new JPanel();
        jpanel.setLayout(new GridLayout(7, 2));
        jpanel.setBorder(BorderFactory.createTitledBorder("Simulation parameter"));
        JLabel jlabel = new JLabel("no. of nodes", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        jpanel.add(node_no);
        node_no.setFont(systemFont);
        jlabel = new JLabel("no. of ftp", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        jpanel.add(ftp_no);
        ftp_no.setFont(systemFont);
        jlabel = new JLabel("no. of cbr", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        jpanel.add(cbr_no);
        cbr_no.setFont(systemFont);
        jlabel = new JLabel("no. of ping", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        jpanel.add(ping_no);
        ping_no.setFont(systemFont);
        jlabel = new JLabel("stop time", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        jpanel.add(simStopField);
        simStopField.addKeyListener(new KeyAdapter() {

            final NSG this$0;

            public void keyPressed(KeyEvent keyevent)
            {
                dirty = true;
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        jlabel = new JLabel("MAC", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        macBox.setFont(systemFont);
        jpanel.add(macBox);
        macBox.addItemListener(new ItemListener() {

            final NSG this$0;

            public void itemStateChanged(ItemEvent itemevent)
            {
                dirty = true;
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        jlabel = new JLabel("Routing", 4);
        jlabel.setFont(systemFont);
        jpanel.add(jlabel);
        routingBox.setFont(systemFont);
        jpanel.add(routingBox);
        routingBox.addItemListener(new ItemListener() {

            final NSG this$0;

            public void itemStateChanged(ItemEvent itemevent)
            {
                dirty = true;
            }

            
            {
                this$0 = NSG.this;
                //super();
            }
        });
        linkPane = new JTabbedPane(2);
        linkPane.setBorder(BorderFactory.createTitledBorder("Agent type"));
        linkPane.setFont(systemFont);
        JPanel jpanel1 = new JPanel();
        jpanel1.setLayout(new GridLayout(5, 2));
        jlabel = new JLabel("start time", 4);
        jlabel.setFont(systemFont);
        jpanel1.add(jlabel);
        jpanel1.add(ftp_start);
        jlabel = new JLabel("stop time", 4);
        jlabel.setFont(systemFont);
        jpanel1.add(jlabel);

⌨️ 快捷键说明

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