java绘图坐标体系.docx

上传人:b****3 文档编号:2171779 上传时间:2022-10-27 格式:DOCX 页数:9 大小:99.62KB
下载 相关 举报
java绘图坐标体系.docx_第1页
第1页 / 共9页
java绘图坐标体系.docx_第2页
第2页 / 共9页
java绘图坐标体系.docx_第3页
第3页 / 共9页
java绘图坐标体系.docx_第4页
第4页 / 共9页
java绘图坐标体系.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

java绘图坐标体系.docx

《java绘图坐标体系.docx》由会员分享,可在线阅读,更多相关《java绘图坐标体系.docx(9页珍藏版)》请在冰豆网上搜索。

java绘图坐标体系.docx

java绘图坐标体系

java绘图坐标体系

像素:

计算机屏幕上显示的内容都是屏幕上的每一个像素组成。

例如:

计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。

像素是一个密度单位,而厘米是长度单位,两者无法比较。

绘图的原理Part1

Component类提供了两个和绘图相关最重要的方法:

①:

paint(Graphicsg):

绘制组件的外观  

注意点:

当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。

在以下情况会自动调用paint()方法:

  一:

窗口最小化,再最大化。

  二:

窗口的大小发生变化(注意是大小变化,而不是移动窗口)

  三:

repaint函数被调用

②:

repaint():

刷新组件的外观

注意点:

起到动感的作用。

Graphics类:

Graphics可以理解就是画笔,为我们提供各种绘制图形的方法:

①:

画直线     drawLine(intx1,inty1,intx2,inty2);

②:

画矩形边框 drawRect(intx,inty,intwidth,intheight);

③:

画椭圆边框  drawOval(intx,inty,intwidth,intheight);

④:

填充矩形    fillRect(intx,inty,intwidth,intheight);

⑤:

填充椭圆    fillOval(intx,inty,intwidth,intheight);

⑥:

画图片       drawImage(Imageimg,intx,inty,.....);

⑦:

画字符串   drawString(Stringstr,intx,inty);

⑧:

设置画笔的字体  setFont(Fontfont);

⑨:

设置画笔的颜色  setColor(Colorc);

举例如下:

/**

 *java绘图原理

 *不能再JFrame上画图,但是可以在JPanel上画图

 */

packageday0218;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Panel;

importjava.awt.Toolkit;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

publicclassDemo18_1extendsJFrame{

 MyPanelmp=null;

 public Demo18_1(){

  mp=newMyPanel();

  

  this.add(mp);

  

  this.setSize(800,800);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  this.setVisible(true);

 }

 publicstaticvoidmain(String[]args){

  Demo18_1demo18_1=newDemo18_1();

 }

}

//定义一个MyPanel(是我自己的面板,是用于绘图和显示绘图的区域)

classMyPanelextendsJPanel{

 //覆盖JPanel的paint方法

 //Graphics是绘图的重要类,你可以把他理解成一只画笔(可以画各种各样的)

 publicvoidpaint(Graphicsg){

  //调用父类函数完成初始化(这句话不能少,现在似乎可以不加,最好加上)

   super.paint(g);

//  //画一个圆

//  g.drawOval(20,20,40,40);

//  //g.drawOval(70,20,40,40);

//  

//  //画出直线

//  g.drawLine(40,40,90,90);

//  

//  //画出矩形边框

//  g.drawRect(100,100,50,30);

  

  //画出填充矩形

   //设置颜色,若每次颜色不一样,每次都要设置

//    g.setColor(Color.green);

//  g.fillRect(150,150,60,80);

//  g.setColor(Color.yellow);

//  g.fillRect(250,250,60,80);

//  

//   //在面板上画出图片(要先准备张图片)

//   Imageim=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/33.jpg"));

//   //显示图片this指的是这里的JPanel 

//   g.drawImage(im,90,90,356,521,this);

    

   //设置画笔的颜色

//   g.setColor(Color.PINK);

//   g.setFont(newFont("华文琥珀",Font.BOLD,55));

//   //如何画字

//   g.drawString("林峰万岁",100,200);    

 }

}

java事件处理机制

采取的是“委派事件模型”,是指当事件发生(比如按了鼠标,按了键盘)的时候,产生事件的对象(即事件源),会把此信息传递给事件的监听者处理的一种方式,而这里所说的信息实际上就是java.awt.evebt事件类库里某个类所创建的对象,我们暂时称之为事件的对象。

小练习:

点击不同的按钮,让面板的背景色发生相应的变化。

代码如下:

/**

 *讲解java中的事件处理机制

 *理解:

一个事件可以被多个类监听的

 * 

 *一个类要实现监听的步骤

 *1.实现相应的接口(KeyListener、MouseListener、ActionListener、WindowListener)

 *2.把接口的处理方法根据需要重新编写(Override)

 *3.在事件源注册监听

 *4.时间传递是靠事件对象

 */

packageday0218;

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.Graphics;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

publicclassShijianextendsJFrameimplementsActionListener{

 

 privatestaticfinallongserialVersionUID=1L;

 //定义

 JPaneljp=null;

 JButtonjb1,jb2;

 publicShijian(){

  jp=newJPanel();

  jb1=newJButton("黑色");

  jb2=newJButton("红色");

  this.add(jb1,BorderLayout.NORTH);

  jp.setBackground(Color.gray);

  this.add(jp);

  this.add(jb2,BorderLayout.SOUTH);

  Catmycat=newCat();

  //注册监听

  jb1.addActionListener(this);

  jb1.addActionListener(mycat);

  //指定action命令

  jb1.setActionCommand("aa");

  jb2.addActionListener(this);

  jb2.setActionCommand("bb");

  this.setSize(300,300);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  this.setVisible(true);

 }

 publicstaticvoidmain(String[]args){

  Shijiansj=newShijian();

 }

 @Override

 publicvoidactionPerformed(ActionEvente){

  //判断是哪个按钮被点击

  if(e.getActionCommand().equals("aa")){

  // System.out.println("点击了黑色");

   jp.setBackground(Color.black);

  }elseif(e.getActionCommand().equals("bb")){

  // System.out.println("点击了红色");

   jp.setBackground(Color.red);

  }

 }

}

//若要让猫类监听,那么也要注册监听

classCatimplementsActionListener{

 @Override

 publicvoidactionPerformed(ActionEventarg0){

  //TODOAuto-generatedmethodstub

  if(arg0.getActionCommand().equals("aa")){

   System.out.println("猫猫也知道你按了黑色按钮");

  }elseif(arg0.getActionCommand().equals("bb")){

   System.out.println("猫猫也知道你按了红色按钮");

  }

 }

}

//classMyPanelextendsJPanel{

//

//publicvoidpaint(Graphicsg){

//super.paint(g);

//

//}

//

//}

小练习:

怎么让小球受到键盘的控制,上下左右移动。

代码如下:

/**

 *加深对事件处理机制的理解

 *通过上下左右键,来控制小球的位置

 * 

 *我自我感觉是谁实现了监听的,就是在注册监听中被监听的

 */

packageday0218;

importjava.awt.Graphics;

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importjavax.swing.JFrame;

importjavax.swing.JPanel;

publicclassShijian2extendsJFrame {

 MyPanelmp=null;

 

 pu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1