Java坦克大战项目2

@坦克大战项目2

任务2:向对战界面添加监听

在完成了对战界面以后,我们还需要向其中添加监听,使之能够运行。 作为一个界面,需要布局,在这里强调一下,在点击开始按钮后,就开始出现我们的作战界面,这个作战界面我们需要用到卡片布局。

卡片布局的设置如下:

//设置卡片布局
				JPanel JPKaiShi = new JPanel();
				JPKaiShi.setLayout(new FlowLayout(FlowLayout.CENTER));
				
			   	JL1 = new JLabel("stage:1");
				JPKaiShi.add(JL1);
				
				CardLayout card = new CardLayout();
				JPanel  center = new JPanel(card);
				
				this.getContentPane().add(center);
				
				center.add("qishiyemian",JPKaiShi);
							
				KaiShi youxi =  new KaiShi();
				new Thread(youxi).start();//启动坦克发射子弹的这个线程
				
				center.add("game",youxi);
				card.show(center, "qishiyemian");		//初始状态显示为;stage:1

如下图所示:
在这里插入图片描述

/**/向菜单中添加监听**
        KaiShi = new JMenuItem("开始(S)");//主菜单中菜单项的下拉表中的选项
		KaiShi.setMnemonic(KeyEvent.VK_S);//键盘注记符
		KaiShi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
		KaiShi.addActionListener(new ActionListener() {		
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				card.show(center, "game");		//卡片布局	
			}
		});
				
		TuiChu = new JMenuItem("退出(E)");
		TuiChu.setMnemonic(KeyEvent.VK_E);//键盘注记符
		TuiChu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
		//将快捷方式设置为ctrl+e
		TuiChu.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				System.exit(0);
			}			
		});
   

添加完成监听后,再点击开始或者快捷方式启动开始时,会出现以下界面:上述代码中因为含有了坦克对象类,所以在界面中出现了绘制的坦克,在后续中会单独说明坦克对象类的创建及其坦克的绘制。

在这里插入图片描述

下为添加了监听的主界面的大体写法。

public class MenuDemoTank extends JFrame{
	JMenu YouXi,SheZhi,BangZhu;
	JMenuItem KaiShi,TuiChu;
	JMenuBar zhucaidan;
	JSeparator fengexian ;
	JLabel JL1;
	
	public MenuDemoTank() {
		 zhucaidan = new JMenuBar();//主菜单
		 
		YouXi = new JMenu("游戏(G)");//主菜单中的菜单项
		YouXi.setMnemonic(KeyEvent.VK_G);
		SheZhi = new JMenu("设置(T)");
		SheZhi.setMnemonic(KeyEvent.VK_T);
		BangZhu = new JMenu("帮助(P)");
		BangZhu.setMnemonic(KeyEvent.VK_P);
		
		        //设置卡片布局
				JPanel JPKaiShi = new JPanel();
				JPKaiShi.setLayout(new FlowLayout(FlowLayout.CENTER));
				JL1 = new JLabel("stage:1");
				JPKaiShi.add(JL1);
				CardLayout card = new CardLayout();
				JPanel  center = new JPanel(card);
				this.getContentPane().add(center);
				center.add("qishiyemian",JPKaiShi);
				
				KaiShi youxi =  new KaiShi();
							
				center.add("game",youxi);
				card.show(center, "qishiyemian");		
		
		KaiShi = new JMenuItem("开始(S)");//主菜单中菜单项的下拉表中的选项
		KaiShi.setMnemonic(KeyEvent.VK_S);
		KaiShi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
		KaiShi.addActionListener(new ActionListener() {		
			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				card.show(center, "game");			
			}
		});
				
		TuiChu = new JMenuItem("退出(E)");
		TuiChu.setMnemonic(KeyEvent.VK_E);
		TuiChu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
		//将快捷方式设置为ctrl+e
		TuiChu.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				// TODO 自动生成的方法存根
				System.exit(0);
			}			
		});
		
		YouXi.add(KaiShi);
		YouXi.add(TuiChu);
			 
		zhucaidan.add(YouXi);
		zhucaidan.add(SheZhi);
		zhucaidan.add(BangZhu);
		this.setJMenuBar(zhucaidan);
		this.addKeyListener(youxi);//键盘监听要添加到JFrame中,不能添加到JPanel中,所以在主界面上添加监听,在游戏开始面板上写监听的方法
							
			this.setBounds(300,300,600,600);
			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			this.setVisible(true);			
	}	

坦克大战主界面及其监听大体完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值