JavaSE——绘图入门

一、Java绘图坐标体系

下图说明了Java坐标系,坐标原地位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。

二、Java绘图原理

Java中,Component类提供了两个和绘图最相关的方法:

  1. paint()方法绘制组件的外观。
  2. repaint()方法刷新组件的外观。

当组件第一次在屏幕中展示时,程序会自动调用paint()方法来绘制组件。除此之外,在以下情况下paint()方法将会被调用:

  1. 窗口最小化,再最大化。
  2. 窗口的大小发生变化。
  3. repaint()方法被调用。

一个简单的例子:画一个圆

java 复制代码
public class DrawCircle extends JFrame {
    private Mypanel mp = null;
    public static void main(String[] args) {
        new DrawCircle();
        System.out.println("退出程序~");
    }
    public DrawCircle() {
        //初始化面板
        mp = new Mypanel();
        //将面板放到窗口中
        this.add(mp);
        //设置窗口的大小
        this.setSize(300,400);
        //当点击窗口的x,程序完全退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);//可以显示

    }
}
//1.先定义一个Mypane,继承Jpanel类,画图形
class Mypanel extends JPanel {

    //Mypanel 对象是一个画板
    //Graphics 对象是一支画笔
    //Graphics 提供了绘图的方法

    public void paint(Graphics g){
        super.paint(g);//调用父类的方法完成初始化
        //画出一个圆形
        g.drawOval(10,10,100,100);
        System.out.println("paint()方法被调用");
    }
}

三、Graphics类

  1. 画直线 drawLine(int x1,int y1,int x2, int y2)
  2. 画矩形边框 drawRect(int x, int y, int width, int height)
  3. 画椭圆边框 drawOval(int x, int y, int width, int height)
  4. 填充矩形 fillRect(int x, int y, int width, int height)
  5. 填充椭圆 fillOval(int x, int y, int width, int height)
  6. 画图片 drawImage(Image img, int x, in y,...)
  7. 画字符串 drawString(String str, int x, int y)
  8. 设置画笔的字体 setFont(Font font)
  9. 设置画笔的颜色 setColor(Color c)
java 复制代码
public void paint(Graphics g){
        super.paint(g);//调用父类的方法完成初始化
        //画出一个圆形
        g.drawOval(10,10,100,100);

        //画一条直线
        g.drawLine(10,10,100,100);

        //画矩形边框
        g.drawRect(10,10,100,100);

        //画椭圆边框
        g.drawOval(10,10,100,200);

        //设置画笔颜色
        g.setColor(Color.blue);

        //填充矩形
        g.fillRect(100,100,200,200);

        //填充椭圆
        g.fillOval(10,10,100,200);

        //画图片
        //先获取图片资源,/bg.png表示在该项目的根目录去获取bg.png图片资源
        Image image = Toolkit.getDefaultToolkit().getImage(Mypanel.class.getResource("bg.png"));            
        g.drawImage(image, 10, 10, 175,221,this);

        //画字符串
        //给画笔设置颜色和字体
        g.setColor(Color.red);
        //三个参数分别为字体,是否是粗体,大小
        g.setFont(new Font("隶书",Font.BOLD,50));
        g.drawString("北京你好",100,100);
    }
相关推荐
weelinking32 分钟前
【2026】08_Claude与版本控制:Git协作技巧
数据库·人工智能·git·python·数据挖掘·交互·cloudera
踩着两条虫6 小时前
「AI + 低代码」的可视化设计器
开发语言·前端·低代码·设计模式·架构
JoneBB6 小时前
ABAP Webservice连接
运维·开发语言·数据库·学习
scan7246 小时前
智能体多个工具调用
python
2401_867623986 小时前
CSS Flex布局中如何设置子元素间距_掌握gap属性的现代用法
jvm·数据库·python
即使再小的船也能远航6 小时前
【Python】安装
开发语言·python
weixin_421725266 小时前
Linux 编程语言全解析:C、C++、Python、Go、Rust 谁更强?
linux·python·go·c·编程语言
Irissgwe6 小时前
类与对象(三)
开发语言·c++·类和对象·友元
没有梦想的咸鱼185-1037-16636 小时前
AI-Python机器学习、深度学习核心技术与前沿应用及OpenClaw、Hermes自动化编程
人工智能·python·深度学习·机器学习·chatgpt·数据挖掘·数据分析
雪度娃娃7 小时前
转向现代C++——优先选用nullptr而不是0和NULL
开发语言·c++