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