📜  Java AWT |帆布类

📅  最后修改于: 2022-05-13 01:54:24.691000             🧑  作者: Mango

Java AWT |帆布类

Canvas 类是Java AWT 的一部分。画布是一个空白的矩形区域,用户可以在其中绘制或捕获用户的输入。 Canvas 类继承了 Component 类。
Canvas 类的构造函数是:

  1. Canvas() :创建一个新的空白画布。
  2. Canvas(GraphicsConfiguration c) :创建具有指定图形配置的新画布。

Canvas类中常用的方法

MethodExplanation
addNotify()Creates the peer of the canvas.
createBufferStrategy(int n)Creates a new strategy for multi-buffering on this component.
createBufferStrategy(int n, BufferCapabilities c)Creates a new strategy for multi-buffering on this component with the required buffer capabilities
getBufferStrategy()Returns the BufferStrategy used by this component.
paint(Graphics g)paints this component.
update(Graphics g)updates this canvas.

下面的程序说明了 Canvas 类的使用:

  • 程序 1:创建画布并绘制画布。
Java
// Java Program to create a to create
// a canvas and paint the canvas
import java.awt.*;
import javax.swing.*;
class canvas extends JFrame {
 
    // constructor
    canvas()
    {
        super("canvas");
 
        // create a empty canvas
        Canvas c = new Canvas() {
 
            // paint the canvas
            public void paint(Graphics g)
            {
                // set color to red
                g.setColor(Color.red);
 
                // set Font
                g.setFont(new Font("Bold", 1, 20));
 
                // draw a string
                g.drawString("This is a canvas", 100, 100);
            }
        };
 
        // set background
        c.setBackground(Color.black);
 
        add(c);
        setSize(400, 300);
        show();
    }
 
    // Main Method
    public static void main(String args[])
    {
        canvas c = new canvas();
    }
}


Java
// Java Program to create a
// canvas and mouse listener to the
// canvas ( a circle of radius 5 will appear
// at the points where mouse are clicked or
//  dragged on the canvas)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
class canvas extends JFrame implements MouseListener, MouseMotionListener {
 
    // create a canvas
    Canvas c;
 
    // constructor
    canvas()
    {
        super("canvas");
 
        // create a empty canvas
        c = new Canvas() {
            public void paint(Graphics g)
            {
            }
        };
 
        // set background
        c.setBackground(Color.black);
 
        // add mouse listener
        c.addMouseListener(this);
        c.addMouseMotionListener(this);
 
        add(c);
        setSize(400, 300);
        show();
    }
 
    // mouse listener  and mouse motion listener methods
    public void mouseClicked(MouseEvent e)
    {
        Graphics g = c.getGraphics();
 
        g.setColor(Color.red);
 
        // get X and y position
        int x, y;
        x = e.getX();
        y = e.getY();
 
        // draw a Oval at the point
        // where mouse is moved
        g.fillOval(x, y, 5, 5);
    }
 
    public void mouseMoved(MouseEvent e)
    {
    }
 
    public void mouseDragged(MouseEvent e)
    {
        Graphics g = c.getGraphics();
 
        g.setColor(Color.red);
 
        // get X and y position
        int x, y;
        x = e.getX();
        y = e.getY();
 
        // draw a Oval at the point where mouse is moved
        g.fillOval(x, y, 5, 5);
    }
 
    public void mouseExited(MouseEvent e)
    {
    }
 
    public void mouseEntered(MouseEvent e)
    {
    }
 
    public void mouseReleased(MouseEvent e)
    {
    }
 
    public void mousePressed(MouseEvent e)
    {
    }
    // main class
    public static void main(String args[])
    {
        canvas c = new canvas();
    }
}


  • 输出:

  • 程序2:创建一个画布并在画布上添加鼠标监听器(在画布上单击或拖动鼠标的点会出现一个半径为5的圆)。

Java

// Java Program to create a
// canvas and mouse listener to the
// canvas ( a circle of radius 5 will appear
// at the points where mouse are clicked or
//  dragged on the canvas)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
class canvas extends JFrame implements MouseListener, MouseMotionListener {
 
    // create a canvas
    Canvas c;
 
    // constructor
    canvas()
    {
        super("canvas");
 
        // create a empty canvas
        c = new Canvas() {
            public void paint(Graphics g)
            {
            }
        };
 
        // set background
        c.setBackground(Color.black);
 
        // add mouse listener
        c.addMouseListener(this);
        c.addMouseMotionListener(this);
 
        add(c);
        setSize(400, 300);
        show();
    }
 
    // mouse listener  and mouse motion listener methods
    public void mouseClicked(MouseEvent e)
    {
        Graphics g = c.getGraphics();
 
        g.setColor(Color.red);
 
        // get X and y position
        int x, y;
        x = e.getX();
        y = e.getY();
 
        // draw a Oval at the point
        // where mouse is moved
        g.fillOval(x, y, 5, 5);
    }
 
    public void mouseMoved(MouseEvent e)
    {
    }
 
    public void mouseDragged(MouseEvent e)
    {
        Graphics g = c.getGraphics();
 
        g.setColor(Color.red);
 
        // get X and y position
        int x, y;
        x = e.getX();
        y = e.getY();
 
        // draw a Oval at the point where mouse is moved
        g.fillOval(x, y, 5, 5);
    }
 
    public void mouseExited(MouseEvent e)
    {
    }
 
    public void mouseEntered(MouseEvent e)
    {
    }
 
    public void mouseReleased(MouseEvent e)
    {
    }
 
    public void mousePressed(MouseEvent e)
    {
    }
    // main class
    public static void main(String args[])
    {
        canvas c = new canvas();
    }
}
  • 输出:

参考: https: Java/awt/Canvas.html