Graphics对象,我们可以把它想象成“一支画笔”,窗口中的图形都由这支“画笔”画出来的。
设置画笔的颜色和字体前,先把原来的保存,最后用完这个画笔后,把原来的颜色和字体还给它,有借有还。
package cn.sxt.game;
import javax.swing.JFrame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Image;
import java.awt.*;
public class MyGameFrame extends JFrame {
@Override
public void paint(Graphics g) {
Color c = g.getColor();//先保存原来的颜色
Font f = g.getFont();//一样,原来字体先存起来,有借有还
g.setColor(Color.blue);
//paint方法作用是:画出整个窗口及内部内容。被系统自动调用。
System.out.println(">>>调用update方法");
super.paint(g);
//从坐标点(200,100)到(600,600)画出直线
g.drawLine(200, 100, 600, 600);
//画出矩形。矩形左上角顶点坐标(200,100),宽度600,高度600
g.drawRect(200, 100, 600, 600);
//画出椭圆。椭圆外切矩形为:左上角顶点(200,100),宽度600,高度600
g.drawOval(200, 100, 600, 600);
g.fillRect(200, 100, 100, 100);
g.setColor(Color.red);
g.setFont(new Font("宋体", Font.BOLD, 50));
g.drawString("我是谁?", 500, 500);
g.setColor(c);//最后用完了再把原来的颜色还给它
g.setFont(f);//最后再把原来的字体放回去
}
public void launchFrame(){
//在游戏窗口打印标题
setTitle("GAME!");
//窗口大小:宽度500,高度500
setSize(1000, 1000);
//窗口左上角顶点的坐标位置
setLocation(300, 300);
setVisible(true);//窗口默认不可见,设为可见
//增加关闭窗口监听,这样用户点击右上角关闭图标,可以关闭游戏程序
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
}