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

📄 mmqueues.java

📁 一个用于排队系统仿真的开源软件,有非常形象的图象仿真过程!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
           buffPanel.add(buffS);
           buffL.setText(bufStrS + buffS.getValue() + bufStrE);
           buffS.addChangeListener(new ChangeListener() {
               public void stateChanged(ChangeEvent evt) {
                    buffSStateChanged(evt);
               }
           });

// results
            resultsP.setLayout(new GridLayout(2,2));
            resultsP.setBorder(addTitle("Simulation Results",dCst.getSmallGUIFont()));
            c.gridx = 0;
            c.gridy = 1;
            simulationP.add(resultsP, c);

            //media
            mediaJobsL.setText(nStrS + "0" + nStrE);
            mediaJobsL.setFont(dCst.getNormalGUIFont());
            resultsP.add(mediaJobsL);

            //utilizzo
            utilizationL.setText(uStrS + "0" + uStrE);
            utilizationL.setFont(dCst.getNormalGUIFont());
            resultsP.add(utilizationL);

            //throughput
            thrL.setText(thrStrS + "0" + thrStrE);
            thrL.setFont(dCst.getNormalGUIFont());
            resultsP.add(thrL);

            //response time
            responseL.setText(respStrS + "0" + respStrE);
            responseL.setFont(dCst.getNormalGUIFont());
            resultsP.add(responseL);

            updateFields();

            outputP.setLayout(new GridLayout(2, 1));
            c.weightx = 1;
            c.weighty = 0.7;
            c.gridy = 2;
            simulationP.add(outputP, c);
            outputP.add(outputTabP);
            txtScroll.setBorder(addTitle("Simulation Output", dCst.getSmallGUIFont()));
            txtScroll.setName("Text Output");
            outputTabP.add(statiDrawer);
            outputTabP.setTitleAt(0, "States");
            outputTabP.add(txtScroll);
            outputTabP.setTitleAt(1, "Log");
            outputTA.setEditable(false);
            outputTA.setAutoscrolls(true);
            txtScroll.add(outputTA);
            txtScroll.setViewportView(outputTA);
            //outputTabP.add(logD);
            //outputTabP.setTitleAt(2, "Results");
            outputP.add(queueDrawer);
            JPanel p = new JPanel(new GridLayout(1,2));
            p.add(accelerationP);
            p.add(jobsP);
            c.weightx = 0;
            c.weighty = 0;
            c.gridy = 3;
            simulationP.add(p, c);
            c.gridx = 1;
            c.gridx = 0;
            c.weightx = 0;
            c.gridy = 4;
            c.fill = GridBagConstraints.HORIZONTAL;
            simulationP.add(buttonsP, c);
            playB.setText("start");
            buttonsP.add(playB);
            playB.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    playBActionPerformed(evt);
                }
            });
            stopB.setEnabled(false);
            stopB.setText("stop");
            buttonsP.add(stopB);
            stopB.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    stopBActionPerformed(evt);
                }
            });
            pauseB.setEnabled(false);
            pauseB.setText("pause");
            buttonsP.add(pauseB);
            pauseB.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    pauseBActionPerformed(evt);
                }
            });

//menu
        menuB = new JMenuBar();
        setJMenuBar(menuB);
            //queue
            queueMenu = new JMenu("Queue");
            MM1Item = new JRadioButtonMenuItem("M/M/1", true);
            MM1Item.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    MM1Item.setSelected(true);
                    MM1dItem.setSelected(false);
                    showQueue(0);
                }
            });
            queueMenu.add(MM1Item);
            MM1dItem = new JRadioButtonMenuItem("M/M/1/k", false);
            MM1dItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    MM1dItem.setSelected(true);
                    MM1Item.setSelected(false);
                    showQueue(1);
                }
            });

            queueMenu.add(MM1dItem);
            queueMenu.addSeparator();
            //exitMenuItem = new JMenuItem();
            Action exitAction = new AbstractAction("Exit"){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    dispose();
                    Manager.exit(MMQueues.this);
                }
            };
            queueMenu.add(exitAction);
            menuB.add(queueMenu);

            //settings
            settingsMenu = new JMenu("Settings");
            colorsMenu = new JMenu("Colors");
            Action queueCAction = new AbstractAction("Probability..."){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    Color tmpC;
                    tmpC = JColorChooser.showDialog(null,"Probability color", probC);
                    if (tmpC != null){
                        if (DEBUG) {
                            System.out.println("queueC - R:" + tmpC.getRed() +
                                           " G:" + tmpC.getGreen() +
                                           " B:" + tmpC.getBlue());
                        }
                        probC = tmpC;
                        changeColors();
                    }
                }
            };
            colorsMenu.add(queueCAction);
            Action queueFCAction = new AbstractAction("Queue..."){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    Color tmpC;
                    tmpC = JColorChooser.showDialog(null,"Queue color", queueC);
                    if (tmpC != null){
                        if (DEBUG) {
                            System.out.println("queueFC - R:" + tmpC.getRed() +
                                           " G:" + tmpC.getGreen() +
                                           " B:" + tmpC.getBlue());
                        }
                        queueC = tmpC;
                        changeColors();
                    }
                }
            };
            colorsMenu.add(queueFCAction);
            colorsMenu.addSeparator();
            Action statusCAction = new AbstractAction("Empty state..."){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    Color tmpC;
                    tmpC = JColorChooser.showDialog(null,"Empty state color", emptyC);
                    if (tmpC != null){
                        if (DEBUG) {
                            System.out.println("statusC - R:" + tmpC.getRed() +
                                    " G:" + tmpC.getGreen() +
                                    " B:" + tmpC.getBlue());
                        }
                        emptyC = tmpC;
                        changeColors();
                    }
                }
            };
            colorsMenu.add(statusCAction);
            Action animCAction = new AbstractAction("Animation..."){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    Color tmpC;
                    tmpC = JColorChooser.showDialog(null,"Animation color", animC);
                    if (tmpC != null){
                        if (DEBUG) {
                            System.out.println("animC - R:" + tmpC.getRed() +
                                    " G:" + tmpC.getGreen() +
                                    " B:" + tmpC.getBlue());
                        }
                        animC = tmpC;
                        changeColors();
                    }
                }
            };
            colorsMenu.add(animCAction);
            colorsMenu.addSeparator();

            //gradientItem = new JRadioButtonMenuItem("usa gradiente", false);
            gradientItem = new JRadioButtonMenuItem("Use gradient", false);
            gradientItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    gradientF = gradientItem.isSelected();
                    changeColors();
                }
            });
            colorsMenu.add(gradientItem);
            settingsMenu.add(colorsMenu);


            //sizeMenu = new JMenu("Dimensioni");
            sizeMenu = new JMenu("Icon size");

            //Action drawSmallAction = new AbstractAction("Piccole"){
            Action drawSmallAction = new AbstractAction("Small"){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    dCst = new DrawSmall();
                    changeSize();
                }
            };
            sizeMenu.add(drawSmallAction);

            //Action drawNormalAction = new AbstractAction("Normali"){
            Action drawNormalAction = new AbstractAction("Normal"){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    dCst = new DrawNormal();
                    changeSize();
                }
            };
            sizeMenu.add(drawNormalAction);
            //Action drawBigAction = new AbstractAction("Grandi"){
            Action drawBigAction = new AbstractAction("Large"){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    dCst = new DrawBig();
                    changeSize();
                }
            };
            sizeMenu.add(drawBigAction);
            settingsMenu.add(sizeMenu);



            menuB.add(settingsMenu);

            //help
            helpMenu = new JMenu("Help");

            //OLD
            // helpMenuItem = helpMenu.add("Help");
            //NEW
            //@author Stefano Omini
            Action helpAction = new AbstractAction("Help"){
                public void actionPerformed(ActionEvent event)
                {
                    //action code goes here
                    showHelp(event);
                }
            };

            helpMenuItem = helpMenu.add(helpAction);
            //end NEW

            //NEW Bertoli Marco
            helpMenu.addSeparator();
            JMenuItem about = new JMenuItem();
            about.setText("About...");
            about.addActionListener(new ActionListener() {

                /**
                 * Invoked when an action occurs.
                 */
                public void actionPerformed(ActionEvent e) {
                    AboutDialogFactory.showJMCH(MMQueues.this);
                }
            });

            helpMenu.add(about);
            //END new

            menuB.add(helpMenu);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Changes the size of the drawing text
     */
    protected void changeSize() {
        queueDrawer.changeDrawSettings(dCst);
        queueDrawer.repaint();
        statiDrawer.changeDrawSettings(dCst);
        statiDrawer.repaint();
        outputTA.changeDrawSettings(dCst);
        //logD.changeDrawSettings(dCst);
        validate();

    }
    /**
     *
     */
    protected void changeColors() {
        queueDrawer.setColors(emptyC, queueC, animC, gradientF);
        queueDrawer.repaint();
        statiDrawer.setColors(emptyC, queueC, probC, animC);
        statiDrawer.repaint();
    }
    /**
     * @param evt
     */
    protected void buffSStateChanged(ChangeEvent evt) {
        buffer = buffS.getValue();
        if (buffer < 1){
            buffS.setValue(1);
            buffer = 1;
        }
        ql.setMaxStates(buffer);
        queueDrawer.setMaxJobs(buffer);
        statiDrawer.setMaxJobs(buffer);
        buffL.setText(bufStrS + buffS.getValue() + bufStrE);
    }

    protected void showQueue(int queueType) {
        switch (queueType) {
            case 0:
                buffer = 0;
                 ql = new MM1Logic(
                     0.01 * lambdaS.getValue(),
                    0.005 * sS.getValue() * sMultiplier);
                buffPanel.setVisible(false);
                break;

             case 1:
                buffer = BUFF_I;
                ql = new MM1dLogic(
                    0.01 * lambdaS.getValue(),
                    0.005 * sS.getValue() * sMultiplier,
                    buffer);
                buffS.setValue(buffer);
                buffPanel.setVisible(true);
                break;

            default :
                break;
        }
        sS.setValue(S_I);
        lambdaS.setValue(LAMBDA_I);
        statiDrawer.updateLogic(ql);
        queueDrawer.setMaxJobs(buffer);
        statiDrawer.setMaxJobs(buffer);
        updateFields();
    }

    public static void main(String[] args) {
        int i = 0;
        configureUI(plafURIA[i]);
        if (DEBUG)
            System.out.println(plafName[i]);
        showGUI();
    }

    public static void showGUI() {
        try {
            MMQueues inst = new MMQueues();
            inst.setVisible(true);
            Manager.addJMTWindow(inst);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    protected void playBActionPerformed(ActionEvent evt) {
        boolean goOn = true;
        if (nonErgodic)
            if (JOptionPane.NO_OPTION == JOptionPane.showConfirmDialog(
                this,
                "Il processo 

⌨️ 快捷键说明

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