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

📄 swimfish.java

📁 经典的传教士过河问题的java swt实现
💻 JAVA
字号:
package client;

/***********************************
 *SwimFish_1.java
 *
 *Originally created by Wenbin Lian
 *Revised by Zifei Zhong
 *
 *Dept. of Computer Science
 *Wuhan University
 *Wuhan 430072 China
 ***********************************/

 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;
 import java.util.LinkedList;
 import java.io.IOException;


  /**********************************************
 * 主类:SwimFish
 * ********************************************/
 public class SwimFish extends JFrame  implements ActionListener
 {
 	 private  MenuItem file_connect = new MenuItem("Connet");
 	 private  MenuItem file_exit = new MenuItem("Exit");
 	 private  MenuItem op_sound = new MenuItem("Disable Sound");
 	 private  MenuItem help_about = new MenuItem("About");
 	 private  MusicPlay  music;

 	 private  boolean  b_play = true;
 	 private  FishPanel fishpanel;

     public SwimFish()
 	{
 		setTitle("Swimming Fishes with Network");

        Menu file = new Menu("File");
 		file.add(file_connect);
 		file.add(file_exit);
        file.addSeparator();

        Menu options = new Menu("Options");
        options.add(op_sound);
        options.addSeparator();

        Menu help = new Menu("Help");
        help.add(help_about);
        help.addSeparator();

        MenuBar bar = new MenuBar();
        bar.add(file);
        bar.add(options);
        bar.add(help);
        setMenuBar(bar);

        file_connect.addActionListener(this);
        file_exit.addActionListener(this);
        op_sound.addActionListener(this);
        help_about.addActionListener(this);

 		setSize(600,468);
 		setResizable(false);
 		fishpanel = new FishPanel();
 		Container contentpane = getContentPane();
 		contentpane.add(fishpanel);
 		setVisible(true);
 		music = new MusicPlay();
 		enableEvents(AWTEvent.WINDOW_EVENT_MASK);
 	}

 	protected void processWindowEvent(WindowEvent e) {
         if (e.getID() == WindowEvent.WINDOW_CLOSING) {

            if(NetState.b_connect)
                fishpanel.endClient();
             System.exit(0);

          }else{
           super.processWindowEvent(e);
           }
        }

 /**********************************************
 * 菜单命令消息处理
 * ********************************************/
    public void actionPerformed(ActionEvent e)
 	{
 	    if(e.getSource()== file_connect)
 	    {
 	        //响应"连接"或者"断开连接"消息
 	        if(NetState.b_connect == false && fishpanel.client == null)
 	        {

               fishpanel.initClient();
               if(NetState.b_connect)
 	            {
 	           //将菜单项改为"disable connect"

 	            file_connect.setLabel("disable connect");
 	            }
 	        }
 	        else
 	        {
               //将菜单项改为"connect"
               file_connect.setLabel("connect");
               fishpanel.endClient();
 	        }
 	    }
 	    if(e.getSource()== file_exit)
 	    {
 	         if(NetState.b_connect)
                fishpanel.endClient();
             System.exit(0);
 	    }
 	    if(e.getSource()== op_sound)
 	    {
 	         if(b_play)
 	         {
              music.play = false;
              op_sound.setLabel("enable sound");
              b_play = !b_play;
 	         }
 	         else
 	         {
 	           music = new MusicPlay();
 	         op_sound.setLabel("disable sound");
 	         b_play = !b_play;
 	         }
 	    }
 	    if(e.getSource()== help_about)
 	    {
 	       new AboutDialog(this);
 	    }
 	}
 	public static void main(String args[])
 	{
 		new SwimFish();
 	}
 }

⌨️ 快捷键说明

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