📄 mainapplet.java
字号:
"继续外层循环,当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 + -