JFrame类画图的简单用法和理解
先列出JFrame类初始化窗口的一些常用函数,方便大家理解后续代码
- 首先我们看下java文件的基本结构:
java文件名的类通过主函数,调用构造函数初始化窗口参数,之后会自动调用重写的paint函数完成绘画.
先给出文件完整内容,后面逐一解释
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Font;
import javax.swing.JFrame;
public class Test extends JFrame{
Test(){
setTitle("Drawing Graphics in Frames");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,800);
setVisible(true);
setLocationRelativeTo(null);
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
Font font = new Font("宋体",Font.BOLD,30);
g.setFont(font);
g.drawString("Hello World", 50, 50);
}
public static void main(String[] args) {
Test t = new Test();
}
}
文件结构详解
- 首先java头文件的引入
JFrame
类属于java.swing
包;//我们的类需要继承JFrame
类,之后初始化对象时就可以自动调用paint函数
Graphics
类属于java.awt
包;//paint函数的参数会用到这个类
Color
类属于java.awt
包;//用于调整Graphics对象的颜色,即绘画的颜色
Font
类属于java.awt
包;//用于调整绘画文字时的字体风格,粗体斜体,字体大小 - 以java文件名命名的类需要继承JFrame,例如
public class Test extends JFrame
- 重写构造函数并进行相应的初始化
JFrame类初始化的常用方法
//窗口标题
setTitle("Drawing Graphics in Frames");
//关闭窗口即结束程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);4
//窗口大小
setSize(800,800);
//是否可见
setVisible(true);
//窗口屏幕居中
setLocationRelativeTo(null);
- 重写paint方法
paint()
方法是开始绘画的方法,前面的构造函数是初始化的窗口,初始化完成后会自动调用paint()
方法,并把相应得Graphics
对象传入paint()
方法中,之后需要画什么就g.方法名()
就可以在窗口上显示
public void paint(Graphics g){
g.setColor(Color.BLACK); //设置颜色
Font font = new Font("宋体",Font.BOLD,30); //new一个Font对象
g.setFont(font);//通过Font对象设置字体的风格样式
g.drawString("Hello World", 50, 50);//画出字符串
}
以下是paint方法中常用的一些绘画函数:
super.paint(g):调用父类的paint方法,用于清除组件的背景并绘制边框等基本元素。
g.setColor(Color color):设置绘图颜色,其中color是一个Color对象,可以使用预定义的颜色常量或自定义颜色。
g.fillRect(int x, int y, int width, int height):绘制一个填充矩形,其中x和y是矩形的左上角坐标,width和height是矩形的宽度和高度。
g.drawRect(int x, int y, int width, int height):绘制一个空心矩形,参数含义同上。
g.drawOval(int x, int y, int width, int height):绘制一个空心椭圆,其中x和y是椭圆的左上角坐标,width和height是椭圆的宽度和高度。
g.fillOval(int x, int y, int width, int height):绘制一个填充椭圆,参数含义同
再解释下new Font时得`Font.BOLD`参数:
Font.BOLD是Java AWT库中的一个常量,表示字体的粗体样式。它是Font类的静态属性之一,可以用来设置字体的样式。Font.BOLD常量的值为1,表示粗体样式。
除了Font.BOLD之外,Java AWT库中还有其他的常量可以用来设置字体的样式。以下是常用的字体样式常量:
1. Font.PLAIN:普通样式,即无粗体、斜体等效果。
2. Font.ITALIC:斜体样式。
3. Font.BOLD + Font.ITALIC:粗斜体样式,即同时具有粗体和斜体效果。
- main函数new对象,开始绘画
public static void main(String[] args) {
Test t = new Test();
}
这里再插入一个我遇到的问题
g.drawString("Hello", 20, 20);
当字的位置过于靠近窗口上边界的时候,你会发现,窗口不显示任何东西,在我第一次实践的时候我以为是paint方法没有调用,后面才发现是被窗口覆盖了所以才不显示