Vẽ hình tròn lên giao diện bằng Java Swing




Đề bài: Viết chương trình cho phép người dùng vẽ hình tròn lên giao diện bằng cách ấn chuột vào cửa sổ chương trình. Mỗi lẫn ấn chuột vào cửa sổ, chương trình sẽ vẽ một hình tròn tại vị trí ấn chuột.
Yêu cầu kiến thức:

  • Kế thừa và triển khai các phương thức đã được đề ra ở các lớp cha
  • Phân tích và thiết kế các đối tượng trên giao diện là các components
  • Hiểu rõ bản chất cách hoạt động các đối tượng

Cấu trúc thư mục:
src
|——buildUI
   |——MyPoint.java
   |——DrawCircle.java
|——usingUI
   |——MainClass.java
Code tham khảo dưới đây được viết trên JDK ver 8.x:
File MyPoint.java:


package buildUI;

public class MyPoint {
    // Thuoc tinh
    private int x;
    private int y;

    // Phuong thuc
    // Ham khoi tao co doi so
    public MyPoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    // Cac ham getter
    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
}

File DrawCircle.java:


package buildUI;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;

public class DrawCircle extends Frame implements MouseListener {
    // Khai bao vecto, de luu tru toa do cac hinh tron
    private Vector vec;
    private MyPoint currentPoint;

    // Ham khoi tao
    public DrawCircle() {
        setTitle("Draw Circle");
        setSize(300, 400);
        show();

        // Khoi tao danh sach luu tru toa do cac hinh tron o man hinh
        vec = new Vector();

        // Gan phuong thuc click chuot vao cua so
        this.addMouseListener(this);

        // Cho phep nguoi dung dong cua so
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // Lay toa do cua x va y hien tai, luu toa do cua hinh tron vao danh sach
        vec.add(new MyPoint(e.getX(), e.getY()));

        // Thay doi man hinh
        repaint();
    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    @Override
    public void paint(Graphics g) {
        for (int i = 0; i < vec.size(); i++) {
            // Lay tung phan tu la toa do cua hinh tron
            currentPoint = (MyPoint) vec.get(i);

            // Ve hinh tron
            g.drawOval(currentPoint.getX(), currentPoint.getY(), 20, 20);
        }
    }
}

File MyPoint.java:


package usingUI;

import buildUI.DrawCircle;

public class MainClass {
    public static void main(String[] args) {
        DrawCircle drawCircle=new DrawCircle();
    }
}

Kết quả chương trình:


Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình Java từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Ôn tập OOP cơ bản trong Java. Xem tại đây

Có thể bạn sẽ thích…

Trả lời

EnglishVietnamese