📜  Java AWT |帆布类(1)

📅  最后修改于: 2023-12-03 15:01:28.637000             🧑  作者: Mango

Java AWT | Canvas

简介

Java AWT(Abstract Window Toolkit)是Java语言的一套图形用户界面工具包,提供了跨平台的GUI组件。而Canvas是AWT包中一个主要的类,它提供了一个可供绘制的区域,程序员可以在该区域自定义GUI组件、绘制2D或3D图形等操作。

示例代码
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

public class MyCanvas extends Canvas {

  public void paint(Graphics g) {
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.YELLOW);
    g.fillOval(getWidth() / 4, getHeight() / 4, getWidth() / 2, getHeight() / 2);
  }
}

这段示例代码定义了一个自定义的Canvas组件,继承了AWT中的Canvas类,并实现了paint方法,用于自定义绘制操作。

在paint方法中,首先使用黑色填充整个Canvas画布,然后使用黄色绘制了一个椭圆。

使用Canvas自定义GUI组件

使用Canvas类可以很方便地实现自定义GUI组件,只需要在paint方法中实现绘制逻辑即可。

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

public class MyButton extends Canvas {

  private String text;

  public MyButton(String text) {
    this.text = text;
    setSize(100, 50);
    setVisible(true);
  }

  public void paint(Graphics g) {
    g.setColor(Color.GRAY);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.BLACK);
    g.drawString(text, 10, 30);
  }
}

这段示例代码定义了一个自定义的MyButton组件,继承了AWT中的Canvas类,并实现了paint方法,用于绘制GUI组件的外观。

在MyButton的构造函数中,首先设置组件的大小,并设置其可见性为true。在paint方法中,使用灰色填充整个组件区域,然后使用黑色绘制按钮上的文本。

使用Canvas绘制2D或3D图形

Canvas还可以用于绘制任意2D或3D图形,只需要在paint方法中实现绘制逻辑即可。

下面是一个绘制基本图形的示例代码:

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

public class MyCanvas extends Canvas {

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;

    g2.setColor(Color.RED);
    g2.drawLine(10, 10, 100, 10);

    g2.setColor(Color.GREEN);
    g2.drawRect(10, 30, 90, 50);

    g2.setColor(Color.BLUE);
    g2.fillOval(10, 100, 90, 50);

    g2.setColor(Color.YELLOW);
    g2.fillRoundRect(10, 170, 90, 50, 10, 10);
  }
}

在paint方法中,先将Graphics类型对象强制转换为Graphics2D类型对象,以便使用更多的图形绘制API。

调用g2的相关绘制方法,实现绘制直线、矩形、椭圆、圆角矩形等基本图形。