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

📄 mygui.java

📁 赛车程序:先对赛道和赛车建立模型
💻 JAVA
字号:
/**
 * 
 */
package cn.tsinghua.ag5.CarModel;

import cn.tsinghua.ag5.CarModel.*;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

/**
 * @author wfq
 *
 */
public class MyGUI extends JFrame implements KeyListener
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1724513286073868105L;
	//声明全局变量
	public static MyGUI s_mainWnd;
	public static boolean s_isRoadCreated = false;
	public static float s_emStep = 0.05f ;	//	s
	public static Image s_carImage;
	
	public static VisualBar s_toUpdate[] = new VisualBar[3];
	
//	private Container t_container;
	public static CanvasPanel s_cvs;
	private static AcEvtHandler s_handler;
	private JButton m_btStart, m_btReset, m_switch, m_pause;
	private static BorderLayout s_layout;
	private static JPanel s_panel;
	
	public static VisualSteer s_steer;

	/**
	 * 
	 */
	public MyGUI() {
		// TODO Auto-generated constructor stub
		super("系统建模理论与方法课程设计	by wfq");

		Container t_container = this.getContentPane();

		s_handler = new AcEvtHandler();
		
//		t_container.setBackground( Color.GRAY);
		
		s_layout = new BorderLayout(2, 2);
		
		t_container.setLayout(s_layout);
		
		s_panel = new RightFrame();
		s_panel.setLayout(new FlowLayout());
		s_panel.setPreferredSize(new Dimension(215, 768));
//		t_panel.setSize(200, 768);
//		t_panel.setBackground(Color.PINK);

		s_steer = new VisualSteer();
		s_panel.add(s_steer);
		
		s_toUpdate[0] = new VisualBar("Speed:", 0,40);
		s_toUpdate[1] = new VisualBar("Drive:", 0, 4000);
		s_toUpdate[2] = new VisualBar("Brake:", 0, 8000);
		
		for(VisualBar i : s_toUpdate)
		{
			s_panel.add(i);
		}
		
		m_switch = new JButton("      Switch       ");
		m_switch.addActionListener(s_handler);
		s_panel.add(m_switch);
		
		m_btReset = new JButton("     R e s e t     ");
		m_btReset.addActionListener(s_handler);
		s_panel.add(m_btReset);
		
		m_btStart = new JButton("      S t a r t      ");
		m_btStart.addActionListener(s_handler);
		s_panel.add(m_btStart);
		
		m_pause = new JButton("     P a u s e     ");
		m_pause.addActionListener(s_handler);
		s_panel.add(m_pause);
		
		s_panel.setBackground( Color.LIGHT_GRAY);
		s_panel.setVisible(true);
		
		t_container.add(s_panel, BorderLayout.EAST);
		
		setSize(1024, 768);
		setVisible(true);
		
		addKeyListener(this);
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GeogInfo.genRoad();
		CanvasPanel.s_cars = new DynModel[DynModel.s_carNum];
		CanvasPanel.s_ctrl = new CtrlStrategy[DynModel.s_carNum];
		
		for(int i = 0; i<DynModel.s_carNum; i++)
		{
			CanvasPanel.s_cars[i] = new DynModel(i + 1);
			if(i == 0)
			{
				CanvasPanel.s_ctrl[i] = new CtrlStrategy(CanvasPanel.s_cars[i]);
			}else
			{
				CanvasPanel.s_ctrl[i] = new CtrlStrategy(CanvasPanel.s_cars[i], 
						CanvasPanel.s_cars[i-1]);
			}
		}
		
		s_cvs = new CanvasPanel();
		s_mainWnd = new MyGUI();	
		
		Container t_container = s_mainWnd.getContentPane();
//		t_container.setLayout(new FlowLayout());
		t_container.add(s_cvs, BorderLayout.WEST);
		
		//s_mainWnd.pack();
		s_mainWnd.setResizable(false);
		
		s_mainWnd.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
//		System.out.println(MyGUI.class.getResource("") + "car.gif");
		s_carImage = Toolkit.getDefaultToolkit().getImage("car.jpg");
		if(s_carImage == null) 
		{
			throw new Error("Cannot get image!\n");
		}

		s_panel.repaint();
		
		s_cvs.startCanvas();
	}

//	private void genListener()
//	{
//		s_handler = new AcEvtHandler();
//	}
	public void keyPressed(KeyEvent p_event)
	{
//		System.out.println(" key pressed!");
		if(p_event.getKeyCode() == KeyEvent.VK_ENTER)
		{
			CanvasPanel.s_isGlobal = ! CanvasPanel.s_isGlobal;
		}
	}
	
	public void keyReleased(KeyEvent p_event)
	{
//		System.out.println(" key released!");
//		if(p_event.getKeyCode() == KeyEvent.VK_SPACE)
//		{
//			CanvasPanel.s_isGlobal = ! CanvasPanel.s_isGlobal;
//		}
	}

	public void keyTyped(KeyEvent p_event)
	{
//		System.out.println("Action Key actioned!");
	}
	
	private void reset()
	{
		s_cvs.pauseCanvas();
		
		CanvasPanel.s_cars = null;
		CanvasPanel.s_ctrl = null;

		CanvasPanel.s_cars = new DynModel[DynModel.s_carNum];
		CanvasPanel.s_ctrl = new CtrlStrategy[DynModel.s_carNum];
		
		for(int i = 0; i<DynModel.s_carNum; i++)
		{
			CanvasPanel.s_cars[i] = new DynModel(i + 1);
			if(i == 0)
			{
				CanvasPanel.s_ctrl[i] = new CtrlStrategy(CanvasPanel.s_cars[i]);
			}else
			{
				CanvasPanel.s_ctrl[i] = new CtrlStrategy(CanvasPanel.s_cars[i], 
						CanvasPanel.s_cars[i-1]);
			}
		}
	}
	
	private class AcEvtHandler implements ActionListener
	{
		public void actionPerformed(final ActionEvent p_event)
		{
			if(p_event.getSource() == m_btStart)
			{
				s_cvs.resumeCanvas();
				
			}else if(p_event.getSource() == m_btReset)
			{
				reset();
			}else if(p_event.getSource() == m_switch)
			{
				CanvasPanel.s_isGlobal = ! CanvasPanel.s_isGlobal;
			}else if(p_event.getSource() == m_pause)
			{
				s_cvs.pauseCanvas();
			}
		}
	}
}

⌨️ 快捷键说明

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