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

📄 mainframe.java

📁 本程序是用多线程实现了打飞鸟游戏程序
💻 JAVA
字号:
/*
 * mainFrame.java
 *
 * Created on 2001年12月27日, 下午3:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package shoot_birds;

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;

/**
 *程序面板
 * @author open
 */
public class mainFrame extends JFrame 
{
    
    /** Creates a new instance of mainFrame */
    public mainFrame() {
    	String a = System.getProperty("user.dir");//得到位置
    	this.setIconImage(Toolkit.getDefaultToolkit().getImage(a+"\\shoot_birds\\images\\bird.gif"));//设置图标
        init();
        setLayout();
    }
    private void setLayout()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300,350);
        this.setResizable(false);//窗口大小不可改变
      
       
        /*箱子布局界面元素*/
        Box box=Box.createVerticalBox();
        Box box1=Box.createHorizontalBox();
        Box box2=Box.createHorizontalBox();
        box1.add(label1);
        box1.add(getBirdNumText());
        box1.add(test);
        box2.add(label2);
        box2.add(getBulletNumText());
        box2.add(label3);
        box2.add(field3);
        box.add(box1);
        box.add(box2);
        add(panel,BorderLayout.CENTER);
        add(box,BorderLayout.SOUTH);
        /*游戏开始*/
        test.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                startGame();
            }
        });
     }
    private void init()
    {
        
        label1=new JLabel("剩余鸟的数目");
        label2=new JLabel("剩余子弹数目");
        label3=new JLabel("打死鸟数");
        field3=new JTextField(10);//显示打死的鸟数
        field3.setEditable(false);//不可编辑
        setBirdNumText(new JTextField(20));//显示剩余鸟的数目
        setBulletNumText(new JTextField(10));//显示剩余子弹数目
        getBirdNumText().setEditable(false);
        getBulletNumText().setEditable(false);
        panel=new birdpanel();//画板,所有的鸟都在这片天空飞啊飞
        test=new JButton("开始游戏");
        panel.add(test);
      }
    public void startGame()
   {
        /*初始化并启动加鸟线程
         * 考虑到鸟市随机添加的,鸟的速度也是随机的
         * 所以单独一个线程来产生随机数并添加鸟类实例
         * */
    	Runnable rr=new RunRandomBirds(panel);
        Thread t=new Thread(rr);
        t.start();
       /**
        * 监控鸟的数目以及子弹的数目
        * 单独启动一个线程来监控
        * 这样更为灵活方便
        * */
        Runnable rr2=new StatThread(panel,this);
        Thread tt=new Thread(rr2);
        tt.start();
      
        
   }
   
  /*为了在监控线呈里面能设置JTextFile实例们的值,显然得有得到他们的Get方法*/
    public JTextField getBirdNumText() {
        return birdNumText;
    }

    public void setBirdNumText(JTextField birdNumText) {
        this.birdNumText = birdNumText;
    }

    public JTextField getBulletNumText() {
        return bulletNumText;
    }

    public void setBulletNumText(JTextField bulletNumText) {
        this.bulletNumText = bulletNumText;
    }
    
    public JTextField getField3() {
        return field3;
    }

    public void setField3(JTextField field3) {
        this.field3 = field3;
    }
    private JButton test;
    private JTextField birdNumText,bulletNumText,field3;//参数的意义上面已经有解释了
    private JLabel label1,label2,label3;
    private birdpanel panel;
}

⌨️ 快捷键说明

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