坦克大战游戏演示为什么选择这个项目1、好玩2、涉及到java各个方面的技术1、java面向对象编程;2、界面编程;3、绘图技术;4、多线程;5、文件i/o操作;6、数据库3、巩固旧知识,学习新知识java绘图坐标体系绘图坐标本系--介绍坐标原点位于左上角,以像素为单位。
像素是计算机屏幕上最小的显示单位。
在java 的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。
坐标体系--像素计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。
例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。
现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。
因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。
绘图原理(1)[Window013.java]Component类提供了两个和绘图相关最重要的方法:1、paint(Graphics g)绘制组件的外观2、repaint()刷新组件的外观当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件import java.awt.*;import javax.swing.*;public class Window013 extends JFrame{//定义组件MyPanel mp=null;public static void main(String[] args) {Window013 th=new Window013();}public Thread01(){//创建组件mp=new MyPanel();//加入组件this.add(mp);//设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}//定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel extends JPanel{//重写(覆盖)JPanel的paint方法public void paint(Graphics g){//Graphics是绘图的重要类,可以把它理解成一只画笔//1、调用父类函数,完成初始化任务super.paint(g);//super.paint(g);这句话不能少System.out.println("Paint被调用");//用于测试绘图原理2paint调用//先画一个圆g.drawOval(10, 10, 30, 30);//drawOval方法是画圆}}------------------------------------------------------------------------------ 绘图原理(2)在以下情况paint()将会被调用:1、窗口最小化,再最大化2、窗口的大小发生变化3、repaint函数被调用java绘图技术--GraphicsGraphics类[Window014.java]Graphics类你可以理解就是画笔,为我们提供了各种绘制图形的方法:[多看jdk帮助文档]1、画直线 drawLine(int x1,int y1,int x2,int y2);2、画矩形边框 drawRect(int x,int y,int width,int height);3、画椭圆边框 drawOval(int x,int y,int width,int height);4、填充矩形 fillRect(int x,int y,int width,int height);5、填充椭圆 fillOval(int x,int y,int width,int height);6、画图片 drawImage(Image img.int x,int y,..);7、画字符串 drawString(String str,int x,int y);8、设置画笔的字体 setFont(Font font);9、设置画笔的颜色 setColor(Color c);//java画图Graphics绘图类的使用方法import java.awt.*;import javax.swing.*;public class Window014 extends JFrame{//定义组件MyPanel1 mp=null;public static void main(String[] args) {Window014 th=new Window014();}public Window014(){//构建组件mp=new MyPanel1();//加入组件this.add(mp);//设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}//定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel1 extends JPanel{//重写(覆盖)JPanel的paint方法public void paint(Graphics g){//Graphics是绘图的重要类,可以把它理解成一只画笔//1、调用父类函数,完成初始化任务super.paint(g);//画一个直线g.drawLine(10, 10, 40, 10);//画矩形边框g.drawRect(50, 50, 40, 40);//画椭圆边框g.drawOval(100, 100, 60, 60);//画填充矩形g.setColor(Color.blue);g.fillRect(10, 150, 70, 70);//画填充椭圆g.setColor(Color.red);//设置画笔颜色g.fillOval(200, 50, 80, 80);}}------------------------------------------------------------------------------//画图Graphics画图类--画图片--画字[Window015.java]import java.awt.*;import javax.swing.*;public class Window015 extends JFrame{//定义组件MyPanel1 mp=null;public static void main(String[] args) {Window015 th=new Window015();}public Window015(){//构建组件mp=new MyPanel1();//加入组件this.add(mp);//设置窗体this.setSize(400, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}//定义一个MyPanel(我自己的面板是用于绘图和显示绘图的区域)class MyPanel1 extends JPanel{//重写(覆盖)JPanel的paint方法public void paint(Graphics g){//Graphics是绘图的重要类,可以把它理解成一只画笔//1、调用父类函数,完成初始化任务super.paint(g);//在面板上画出图片Imageim=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/F22.jpg"));//实现g.drawImage(im, 0, 0, 300, 200, this);//如何画出字g.setColor(Color.red);g.setFont(new Font("黑体",Font.BOLD,40));g.drawString("祖国万岁", 100, 100);//画弧形g.drawArc(100, 100, 120, 200, -50, -100);}}java事件处理机制如何通过键盘或鼠标的控制使Java程序中的功能有响应?java事件处理机制--初步介绍java事件处理是采取“委派事件模型”。
所谓“委派事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此“信息”传递给“事件的监听者”处理的一种方式,而这里所说的“信息”实际上就是java.awt.event事件类库里某个类所创建的对象,我们暂时把它称为“事件的对象”。
比如:当按下按钮时,就会在按钮触发一个“事件”,程序就会产生一个“事件对象”来表示这个事件,并把这个“事件对象”传递给“事件的监听者”,“事件的监听者”再根据“事件对象”的类型进行相应处理。
为了让“产生事件的对象”[比如按钮]知道要把事件传递给哪一个“事件监听者”,我们必需先把“事件监听者”在“产生事件的对象”注册,这个操作也就是要告知“产生事件的对象”要把事件传递给它。
实例[Window016.java]/*** 功能:事件处理机制*/import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Window016 extends JFrame implements ActionListener{//定义组件JPanel mp=null;JButton jb1,jb2;public static void main(String[] args) {Window016 win=new Window016();}//构造函数public Window016(){//创建组件mp=new JPanel();jb1=new JButton("黑色");jb2=new JButton("红色");//设定布局管理器//加入组件mp.setBackground(Color.black);this.add(mp);this.add(jb1,BorderLayout.NORTH);this.add(jb2,BorderLayout.SOUTH);//猫类在监听Cat mycat1=new Cat();jb1.addActionListener(mycat1);jb2.addActionListener(mycat1);//注册监听jb1.addActionListener(this);jb2.addActionListener(this);//指定action命令jb1.setActionCommand("黑色");jb2.setActionCommand("红色");//JFrame窗体设置this.setTitle("事件处理机制");this.setSize(400, 300);this.setLocationRelativeTo(null);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }//对事件处理的方法public void actionPerformed(ActionEvent e) {//判断是哪个按钮被点击if(e.getActionCommand().equals("黑色")){System.out.println("点击了黑色按钮");mp.setBackground(Color.BLACK);}else if(e.getActionCommand().equals("红色")){System.out.println("点击了红色按钮");mp.setBackground(Color.RED);}else{System.out.println("不知道");}}}class Cat implements ActionListener{public void actionPerformed(ActionEvent arg0) {if(arg0.getActionCommand().equals("黑色")){System.out.println("Cat也知道你按下了黑色按钮");}else if(arg0.getActionCommand().equals("红色")){System.out.println("Cat也知道你按下了红色按钮");}else {System.out.println("Cat也不知道");}}}------------------------------------------------------------------------------ 实例[Window017.java]/*** 功能:加深对事件处理机制的理解* 1、通过上下左右键,来控制一个小球的移动。