当初学C语言的时候,老师讲了一点Windows方面的编程,但是没学会,现在自学java的过程中遇到了一些窗口方面的知识,在这里拿出来和大家分享一下。
作为初学者,我们先来在窗口上画一个笑脸:
首先我把代码打出来:
先是一个主函数来实现自己定义的SmileFace类
package com.li;
public class TestFace {
public static void main(String[] args) {
// TODO 自动生成的方法存根
new SmileFace();
}
}
然后我们来看看SmileFace类的代码
package com.li;
import java.awt.*;
import javax.swing.*;
public class SmileFace extends JFrame{
private static final long serialVersionUID = 4089022528669013943L;
public SmileFace()
{
setTitle(" Simile Face");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(400,500);
setLocation(300,300);
getContentPane().setBackground(Color.yellow);
setVisible(true);
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
g.drawOval(85,75,75,75);
g.setColor(Color.blue);
g.drawOval(100, 98, 10, 10);
g.drawOval(135,98,10,10);
g.drawArc(102, 115, 40, 25, 0, -180);
g.setColor(Color.white);
g.drawString("Smiley Face", 90, 175);
}
}
我们下面来具体分析一下代码:
1.我们需要的是一个可以显示图形的窗口,所以我们的SmileFace类是继承于JFrame类的
2.我们再来看看构造函数
public SmileFace()
{
setTitle(" Simile Face");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(400,500);
setLocation(300,300);
getContentPane().setBackground(Color.yellow);
setVisible(true);
}
从字面意思也可看出来,setTitle是指这个窗口的标题的意思
setDefaultCloseOperation中的JFrame.EXIT_ON_CLOSE指的是窗口上的那个×在鼠标点下后进行的反应,EXIT_ON_CLOSE表示的意思是终止这个程序的运行。setSize表示的是这个窗口的大小,单位是像素,setLocation表示的是窗口的左上角在屏幕的位置,单位也是像素。getContentPane().setBackground()是可以设置窗口的背景色的。而窗口被创建后并不能显示出来,使用setVisible(true)可以把窗口显示出来。
下面看一下paint方法
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
g.drawOval(85,75,75,75);
g.setColor(Color.blue);
g.drawOval(100, 98, 10, 10);
g.drawOval(135,98,10,10);
g.drawArc(102, 115, 40, 25, 0, -180);
g.setColor(Color.white);
g.drawString("Smiley Face", 90, 175);
}
首先,paint方法中有一个graphics的类,这是一个绘图专用的类,这里先不管它,可能你会问,为什么paint方法没有调用呢,其实当setVisible设置为true时,这个方法就已经自动调用了。
使用super关键字是为了调用超类JFrame中的相关方法。
setColor()是用来设置颜色的,通俗的讲,在下一个setColor()出来之前,你在屏幕上输出的所有的东西的颜色由上一个setColor()来决定。
drawOval()是用来画椭圆形的,前两个参数代表圆心坐标,后两个表示椭圆的长轴和短轴(不是半轴)
drawArc()是用来画圆弧的,前四个参数和drawOval()的含义一样,后两个中的第一个表示圆弧的起始的角度,后一个表示圆弧终止的角度,可以为负数(默认逆时针旋转为正)
drawString()表示在某个坐标开始输出一行字,后两个数字代表坐标。