JFrame类画图的简单用法和理解

文章介绍了如何使用Java的JFrame类创建窗口,并通过重写paint方法进行图形绘制。在JFrame的构造函数中设置了窗口的基本属性如标题、大小和位置,然后在paint方法内利用Graphics类进行画图,包括设置颜色、字体以及绘制文字。文中还提到了paint方法中的其他绘画函数,并指出当文字位置太靠近窗口上边界时可能会被覆盖的问题。
摘要由CSDN通过智能技术生成

JFrame类画图的简单用法和理解

先列出JFrame类初始化窗口的一些常用函数,方便大家理解后续代码

  1. 首先我们看下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();
    }
}

文件结构详解

  1. 首先java头文件的引入
    JFrame类属于java.swing包;//我们的类需要继承JFrame类,之后初始化对象时就可以自动调用paint函数
    Graphics类属于java.awt包;//paint函数的参数会用到这个类
    Color类属于java.awt包;//用于调整Graphics对象的颜色,即绘画的颜色
    Font类属于java.awt包;//用于调整绘画文字时的字体风格,粗体斜体,字体大小
  2. 以java文件名命名的类需要继承JFrame,例如public class Test extends JFrame
  3. 重写构造函数并进行相应的初始化
    JFrame类初始化的常用方法
//窗口标题
setTitle("Drawing Graphics in Frames");
//关闭窗口即结束程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);4
//窗口大小
 setSize(800,800); 
 //是否可见
 setVisible(true);
 //窗口屏幕居中
 setLocationRelativeTo(null);
  1. 重写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:粗斜体样式,即同时具有粗体和斜体效果。
  1. main函数new对象,开始绘画
 public static void main(String[] args) {
        Test t = new Test();
    }

这里再插入一个我遇到的问题

g.drawString("Hello", 20, 20);当字的位置过于靠近窗口上边界的时候,你会发现,窗口不显示任何东西,在我第一次实践的时候我以为是paint方法没有调用,后面才发现是被窗口覆盖了所以才不显示

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值