java工程开发之图形化界面之(第五课)
下面我们将:
一)更加完整的解释Graphics类
二)使用方法来更清晰的重新编写前面图形小应用程序之一
三)介绍一些其他的绘图的方法
四)介绍方法init,它是类似于paint但是用于不同用途的另一个小应用程序方法
Graphics类
它的对象表示屏幕上的一块区域,当比这一说法包含更多的内容。这样的对象拥有让其在所表示的屏幕区域上绘制图案以及书写文本的方法。
Graphics_Object.drawOval(X,Y,Width,Heigth);//在点x,y处以指定的宽度和高度绘制椭圆的外部轮廓
Graphics_Object.fillOver(x,y,width,higth);//和drawOval一样,但是内部被填满
Graphics_Object.drawArc(x,y,width,hight,start_angle,arcangle);//绘制椭圆的一部分
Graphics_Object.fillArc(x,y,width,hight,start_angle,arcangle);//同drawArc,但是椭圆的可见部分是被填充的
Graphics_Object.drawRect(x,y,widthheight);//在点x,y处以指定的宽度和高度绘制整个矩形的外部轮廓
Graphics_Object.fillRect(x,y,widthheight);//同上,但是被填充
Graphics_Object.drawRect(x1,y1,x2,y2);//在这两点间画一条线
Graphics_Object.drawString(A_String,X,Y);//从X,Y位置开始绘制一条线
Graphics_Object.setColor(Color_Object);//设置后继绘图和文本使用的颜色。直到下一次更改前这个更改是一直有效的
这个用于小应用程序的Graphics对象来自何方?当你运行小应用程序时,自动创建一个适宜的Graphics对象,在paint被自动调用时,该对象被用作传递给小应用程序paint方法的参量。其中自动发生了很多事情,否则就要 你自己动手调用paint方法了。
/////////////////////////////////////////////////////////////////////////////////////
到目前为止,我们已经定义了小应用程序,已经定义了方法paint。你也能够在你编写小应用程序的任何时候定义另一个名称为init的方法。像paint一样,方法init在你运行小程序的时候被自动调用。然而从某种意义上来说,inti方法是一个对小应用程序来说比paint方法更为基础的方法。paint方法仅仅用于绘图,也就是说,用于类Graphics的方法调用。小应用程序的所有其它动作都是从init方法开始执行。小应用程序的init方法与应用程序的main方法用途相似。无论是时候,当你定义一个小应用程序类时,你通常都应该定义init方法。
/////////////////////////////////////////////////////////////////////////////////////
向小应用程序中添加标签
小应用程序中的标签比引起来的字符串要小一些,但他的处理方式与许多小应用程序部件(eg:按钮)的处理方式相同。因此,标签提供了向小应用程序添加文字的另一种方式。
eg:比如字符串这种东西可以通过drawString来实现,当然我们也可以通过标签的方式来实现使用的是方法init而不是paint。
在看代码细节之前我们还是先来看看小程序中使用的简单但是新颖的东西,留意下面的代码:
Container contentPage = getContentPane();
getContentPane称为小应用程序的内容池(Content Pane).我们可以将内容池看作是小应用程序的内部。当向小应用程序添加部件时,你把他们添加到该小应用程序的内容池中。内容池是类型为Container的对象,这是一个在java类库中为你定义的一个类这里Container的主要用途是声明变量,命名小应用程序的内容池。
1 package 一个事例图形小应用程序; 2 3 import javax.swing.JApplet; 4 import javax.swing.JLabel; 5 import java.awt.Color; 6 import java.awt.Container; 7 import java.awt.FlowLayout; 8 9 public class useLable extends JApplet { 10 public void init(){ 11 Container contentPane = getContentPane(); 12 contentPane.setBackground(Color.white); 13 14 JLabel label1 = new JLabel ("My name is zhangjie\n"); 15 JLabel label2 = new JLabel ("My name is tianxia\n"); 16 contentPane.setLayout(new FlowLayout()); 17 contentPane.add(label1); 18 contentPane.add(label2); 19 20 } 21 }