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

📄 mainapplet.java

📁 约瑟夫环javaApplet演示程序(源码).
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                       "继续外层循环,当i = s时,两层循环结束,我们已经完成了\n"+
                       "任务了,呵呵,很简单吧!\n\n    "+
                       "    以上为个人解题思路,若有差错请于指正,谢谢^_^~");
    jTextArea2.setLineWrap(true);

    //设置按钮“显示图片”为不可用
    jButton5.setEnabled(false);
    jButton5.setFont(new java.awt.Font("Dialog", 0, 12));
    jButton5.setText("显示图片");
    jButton5.addActionListener(new MainApplet_jButton5_actionAdapter(this));

    jPanel9.setBorder(border17);
    jPanel9.setBounds(new Rectangle(535, 8, 302, 433));
    jPanel9.setLayout(borderLayout7);
    jTextArea3.setBackground(Color.orange);
    jTextArea3.setEnabled(true);
    jTextArea3.setFont(new java.awt.Font("Dialog", 0, 13));
    jTextArea3.setForeground(Color.black);
    jTextArea3.setBorder(border16);
    jTextArea3.setToolTipText("问题描述");
    jTextArea3.setEditable(false);


    //问题描述
    jTextArea3.setText(
        "约瑟夫环问题仿真:\n问题描述:\n设编号为1,2,...,n(n>0)个人按顺时针方向\n围坐一圈,每个人持有一个正整数密码,开始时任\n" +
        "意给出一个报数上限值m,从第一个人开始顺时针\n方向自1起顺序报数,报到m的人出列,将她的密\n码作为新的m值,从她在顺时针方向上的下个人重\n" +
        "新自1起顺序报数;如此下去,直到所有的所有的\n人全部出列为止。");

    //界面构造
    jTextArea1.setBackground(Color.black);
    jTextArea1.setEnabled(true);
    jTextArea1.setFont(new java.awt.Font("Dialog", 0, 13));
    jTextArea1.setForeground(Color.white);
    jTextArea1.setBorder(null);
    jTextArea1.setToolTipText("运行状况");
    jTextArea1.setEditable(false);
    jTextArea1.setText("");
    jTextArea1.setBounds(new Rectangle(6, 1, 288, 243));
    jPanel11.setLayout(null);
    jSlider2.setBorder(border19);
    jSlider2.setToolTipText("出列速度");
    jSlider2.setBounds(new Rectangle(315, 3, 167, 33));
    jSlider2.addMouseMotionListener(new MainApplet_jSlider2_mouseMotionAdapter(this));
    jLabel17.setBounds(new Rectangle(285, 3, 30, 30));
    jLabel17.setText("快");
    jLabel17.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel18.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel18.setText("慢");
    jLabel18.setBounds(new Rectangle(493, 3, 30, 30));
    jLabel19.setBounds(new Rectangle(380, 39, 73, 19));
    jLabel19.setText("出列速度");
    jLabel19.setFont(new java.awt.Font("Dialog", 0, 12));
    jPanel11.setBackground(SystemColor.inactiveCaptionText);
    jPanel10.setBackground(SystemColor.inactiveCaptionText);
    jPanel10.setPreferredSize(new Dimension(294, 181));
    jLabel20.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel20.setText("计算机网络专业   林沛仲   制作");
    jLabel20.setBounds(new Rectangle(805, 12, 183, 28));
    jLabel21.setFont(new java.awt.Font("Dialog", 0, 12));
    jLabel21.setText("2008.1");
    jLabel21.setBounds(new Rectangle(879, 35, 68, 17));
    this.add(jPanel2, java.awt.BorderLayout.SOUTH);
    jPanel2.add(jPanel7, BorderLayout.CENTER);
    jPanel7.add(jLabel2, null);
    jPanel7.add(jSlider1, null);
    jPanel7.add(jLabel15, null);
    jPanel7.add(jLabel16, null);
    jPanel7.add(jSlider2, null);
    jPanel7.add(jLabel18, null);
    jPanel7.add(jLabel17, null);
    jPanel7.add(jLabel19, null);
    jPanel7.add(jLabel21, null);
    jPanel7.add(jLabel20, null);
    this.add(jPanel1, java.awt.BorderLayout.NORTH);
    jPanel1.add(jLabel1, null);
    this.add(jPanel3, java.awt.BorderLayout.CENTER);
    jPanel3.add(jPanel4, BorderLayout.EAST);
    jPanel4.add(jButton1, null);
    jPanel4.add(jButton2, null);
    jPanel4.add(jButton5, null);
    jPanel4.add(jButton4, null);
    jPanel3.add(jPanel5, BorderLayout.CENTER);
    jPanel5.add(jPanel6, BorderLayout.NORTH);
    jPanel6.add(jLabel11, null);
    jPanel6.add(jLabel12, null);
    jPanel6.add(m6, null);
    jPanel6.add(m7, null);
    jPanel6.add(m5, null);
    jPanel6.add(jLabel7, null);
    jPanel6.add(jLabel9, null);
    jPanel6.add(jLabel10, null);
    jPanel6.add(m8, null);
    jPanel6.add(m4, null);
    jPanel6.add(jLabel6, null);
    jPanel6.add(m9, null);
    jPanel6.add(m3, null);
    jPanel6.add(jLabel5, null);
    jPanel6.add(m10, null);
    jPanel6.add(m2, null);
    jPanel6.add(jLabel4, null);
    jPanel6.add(jLabel3, null);
    jPanel6.add(jLabel14, null);
    jPanel6.add(jLabel13, null);
    jPanel6.add(m11, null);
    jPanel6.add(m1, null);
    jPanel6.add(m12, null);
    jPanel6.add(jLabel8, null);
    jPanel9.add(jPanel11, BorderLayout.CENTER);
    jPanel11.add(jTextArea1, null);
    jPanel9.add(jPanel10, BorderLayout.NORTH);
    jPanel10.add(jTextArea3, null);
    jPanel6.add(jPanel8, null);
    jPanel8.add(jScrollPane1, BorderLayout.CENTER);
    jPanel6.add(jPanel9, null);
    jScrollPane1.getViewport().add(jTextArea2, null);
  }

  //获取applet信息
  public String getAppletInfo() {
    return "这是约瑟夫环算法的演示程序--作者:林沛仲";
  }

  //获取applet的参数信息
  public String[][] getParameterInfo() {
    return null;
  }

  //主方法
  public static void main(String[] args) {
    //产生对象
    MainApplet applet = new MainApplet();
    //独立运行为true
    applet.isStandalone = true;

    //产生Frame窗口,并把applet附件到该窗口上
    Frame frame;
    frame = new Frame();
    frame.setTitle("演示程序");
    frame.add(applet, BorderLayout.CENTER);

    //applet初始化
    applet.init();
    //启动applet
    applet.start();
    //设置frame的大小
    frame.setSize(980, 575);
    //窗口居中
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation( (d.width - frame.getSize().width) / 2,
                      (d.height - frame.getSize().height) / 2);
   //可视性为true
    frame.setVisible(true);
  }


  //参数导入的事件处理
  void jButton1_actionPerformed(ActionEvent e) {
    //调用复原的方法,让图片等一些参数恢复到原先设定的值
    toFirst();
    //调用设置密码对话框
    ParaDialog para = new ParaDialog(null, "设定密码", true, this);
    para.setSize(new Dimension(500, 650));
    para.setLocation(200, 50);
    para.setVisible(true);
    //获得密码数组和初始密码
    this.a = para.a;
    this.cs = para.cs;

    //在ParaDialog对话框中,如果有关闭对话框窗口的情况,程序把cs的值赋予-1,此时说明没有输入密码信息,对其不做任何显示直接返回
   if (cs == -1) {
     return;
   }

    //调用关键方法getMima(int a[]),该方法的作用是对通过密码对话框导入的密码信息进行过滤,合格的信息进行显示
    getMima(a);

    //在运行状况窗口格式化输出程序运行信息
    jTextArea1.append("密码分别为:\n");
    for (int i = 0; i < a.length; i++) {
      jTextArea1.append( (i + 1) + "号:" + a[i] + "   ");
      if ( (i + 1) % 4 == 0 && i != 0) {
        jTextArea1.append("\n");
      }
    }
    jTextArea1.append("\n");
    jTextArea1.append("初始密码:" + cs + " \n出列前后的情况:\n");
    //重画面板
    this.repaint();
  }

  //设置密码标签的信息
  public void getMima(int a[]) {
    for (int i = 0; i < a.length; i++) {
      if (a[i] != 0) {
        ms[i].setText(a[i] + "");
      }
    }
  }

  //全部清除密码标签的信息
  public void setNull() {
    for (int i = 0; i < n; i++) {
      ms[i].setText("");
    }
  }

  //开始按钮的事件处理
  void jButton2_actionPerformed(ActionEvent e) {
    //新建线程用于运行功能类MainSrc
    //实现接口Runnable
    Runnable play = new Runnable() {
      public void run() {
        MainSrc mainSrc = new MainSrc(a, cs, getMainApplet());
      }
    };
    //启动线程
    new Thread(play).start();
    //导入参数按钮,开始按钮,显示图片按钮设置为不可用
    jButton1.setEnabled(false);
    jButton2.setEnabled(false);
    jButton5.setEnabled(false);
  }

  //获得本对象的方法,供内部类play调用(此步骤很关键)
  public MainApplet getMainApplet() {
    return this;
  }



  FlowLayout flowLayout1 = new FlowLayout();
  Border border8;
  Border border9;
  JPanel jPanel7 = new JPanel();

  //控制速度的滑条
  JSlider jSlider1 = new JSlider(0, 2000, 500);
  //定义运算速度
  static int sd = 500;

  //组件声明
  Border border10;
  JLabel jLabel2 = new JLabel();
  Border border11;
  JLabel jLabel1 = new JLabel();
  Border border12;
  Border border13;
  Border border14;
  JLabel jLabel15 = new JLabel();
  Border border15;
  JLabel jLabel16 = new JLabel();
  JPanel jPanel8 = new JPanel();
  BorderLayout borderLayout4 = new BorderLayout();
  JScrollPane jScrollPane1 = new JScrollPane();
  JTextArea jTextArea2 = new JTextArea();
  JButton jButton5 = new JButton();
  Border border16;
  JPanel jPanel9 = new JPanel();
  Border border17;
  BorderLayout borderLayout7 = new BorderLayout();
  JPanel jPanel10 = new JPanel();
  JTextArea jTextArea3 = new JTextArea();
  JPanel jPanel11 = new JPanel();
  JTextArea jTextArea1 = new JTextArea();
  JSlider jSlider2 = new JSlider(0, 6000, 1000);
  Border border18;
  Border border19;

  //恢复参数的方法
  public void toFirst() {
    jSlider1.setValue(500);
    jSlider2.setValue(1000);
    sd = 500;
    toStop = 1000;
    jTextArea1.setText("");
    //timer.restart();
    for (int i = 0; i < n; i++) {
      jLabels[i].setVisible(true);
    }
    jButton2.setEnabled(false);
  }

  //为JSlider1添加鼠标拖动的事件处理
  void jSlider1_mouseDragged(MouseEvent e) {
    sd = jSlider1.getValue();
  }

  //如果想通过定时器实现一些功能的话,在前面先启动定时器,让你更好在下面添加代码
  public void actionPerformed(ActionEvent actionEvent) {
    if (actionEvent.getSource() == timer) {

    }
  }

  //显示图片按钮的事件处理
  void jButton5_actionPerformed(ActionEvent e) {
    for (int i = 0; i < n; i++) {
      jLabels[i].setVisible(true);
    }
  }

  //帮助按钮的事件处理
  void jButton4_actionPerformed(ActionEvent e) {
    if (jPanel8.isVisible()) {
      jPanel8.setVisible(false);
      jButton4.setText("帮助");
    }
    else {
      jPanel8.setVisible(true);
      jButton4.setText("关闭");
    }
  }

  //声明处理的速度
  static int toStop = 1000;
  //组件声明
  JLabel jLabel17 = new JLabel();
  JLabel jLabel18 = new JLabel();
  JLabel jLabel19 = new JLabel();
  Border border20;
  Border border21;
  JLabel jLabel20 = new JLabel();
  JLabel jLabel21 = new JLabel();

  //jSlider2的鼠标拖动事件处理
  void jSlider2_mouseDragged(MouseEvent e) {
    toStop = jSlider2.getValue();
  }
}

//下面是为各个组件创建的事件监听适配器
class MainApplet_jButton1_actionAdapter
    implements java.awt.event.ActionListener {
  MainApplet adaptee;

  MainApplet_jButton1_actionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

class MainApplet_jButton2_actionAdapter
    implements java.awt.event.ActionListener {
  MainApplet adaptee;

  MainApplet_jButton2_actionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}

class MainApplet_jSlider1_mouseMotionAdapter
    extends java.awt.event.MouseMotionAdapter {
  MainApplet adaptee;

  MainApplet_jSlider1_mouseMotionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {
    adaptee.jSlider1_mouseDragged(e);
  }
}

class MainApplet_jButton4_actionAdapter
    implements java.awt.event.ActionListener {
  MainApplet adaptee;

  MainApplet_jButton4_actionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton4_actionPerformed(e);
  }
}

class MainApplet_jButton5_actionAdapter
    implements java.awt.event.ActionListener {
  MainApplet adaptee;

  MainApplet_jButton5_actionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton5_actionPerformed(e);
  }
}

class MainApplet_jSlider2_mouseMotionAdapter
    extends java.awt.event.MouseMotionAdapter {
  MainApplet adaptee;

  MainApplet_jSlider2_mouseMotionAdapter(MainApplet adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {
    adaptee.jSlider2_mouseDragged(e);
  }
}

⌨️ 快捷键说明

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