Tạo máy tính đơn giản bằng Java Swing



Đề bài: Viết chương trình có giao diện gồm 3 TextField dùng để chứa 2 toán hạng và 1 kết quả; 4 Button biểu diễn 4 phép toán Cộng, Trừ, Nhân và Chia. Mỗi khi người dùng ấn chuột vào một phép toán, chương trình sẽ tính toán và hiển thị ở trường TextField tương ứng.
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
   |——SimpleCalculator.java
|——usingUI
   |——MainClass.java
Code tham khảo dưới đây được viết trên JDK ver 8.x:
File SimpleCalculator.java:


package buildUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SimpleCalculator extends JFrame implements ActionListener {
    // Khai bao 4 button
    private JButton btnCong;
    private JButton btnTru;
    private JButton btnNhan;
    private JButton btnChia;

    // Khai bao 3 textfield chua 2 so
    private JTextField tfNum1;
    private JTextField tfNum2;

    // Khai bao1 textfield hien thi ket qua
    private JTextField tfResult;

    // Khai bao container
    private Container cont;

    // Khai bao cac panel de gom nhom cac component
    private JPanel panel1, panel2;

    // Ham khoi tao
    public SimpleCalculator(String title) {
        super(title);

        cont = this.getContentPane();

        // Tao cac thanh phan tren giao dien khoi tao
        JLabel lbNum1 = new JLabel("Enter Number 1: ");
        tfNum1 = new JTextField();
        JLabel lbNum2 = new JLabel("Enter Number 2: ");
        tfNum2 = new JTextField();
        JLabel lbResult = new JLabel("Result: ");
        tfResult = new JTextField();

        // Vo hieu qua nhap cua tfResult
        tfResult.setEditable(false);

        // Dat cac component vao cac panel thich hop
        panel1 = new JPanel();
        panel1.setLayout(new GridLayout(3, 2)); // Layout gom 3 hang 2 cot
        panel1.add(lbNum1);
        panel1.add(tfNum1);
        panel1.add(lbNum2);
        panel1.add(tfNum2);
        panel1.add(lbResult);
        panel1.add(tfResult);

        // Tao 4 nut cho 4 phep toan
        btnCong = new JButton("+");
        btnTru = new JButton("-");
        btnNhan = new JButton("*");
        btnChia = new JButton("/");

        // Panel2 chua 5 4 phep toan
        panel2 = new JPanel();
        panel2.add(btnCong);
        panel2.add(btnTru);
        panel2.add(btnNhan);
        panel2.add(btnChia);

        // Dat panel 1 vao vung chinh giua cua container
        cont.add(panel1);

        // Dat panel 2 vao vung ben duoi
        cont.add(panel2, "South");

        // Gan Listen cho cac button tuong ung
        btnCong.addActionListener(this);
        btnTru.addActionListener(this);
        btnNhan.addActionListener(this);
        btnChia.addActionListener(this);

        // Thiet lap kich thuoc va hien thi
        this.pack();
        this.setVisible(true);
    }

    // Ham thuc hien phep cong
    public void cong() {
        // Lay tu du lieu
        double num1 = Double.parseDouble(tfNum1.getText());
        double num2 = Double.parseDouble(tfNum2.getText());

        // Tinh toan
        double result = num1 + num2;

        // Hien thi ket qua
        tfResult.setText(String.valueOf(result));
    }

    // Ham thuc hien phep tru
    public void tru() {
        // Lay tu du lieu
        double num1 = Double.parseDouble(tfNum1.getText());
        double num2 = Double.parseDouble(tfNum2.getText());

        // Tinh toan
        double result = num1 - num2;

        // Hien thi ket qua
        tfResult.setText(String.valueOf(result));
    }

    // Ham thuc hien phep nhan
    public void nhan() {
        // Lay tu du lieu
        double num1 = Double.parseDouble(tfNum1.getText());
        double num2 = Double.parseDouble(tfNum2.getText());

        // Tinh toan
        double result = num1 * num2;

        // Hien thi ket qua
        tfResult.setText(String.valueOf(result));
    }

    // Ham thuc hien phep chia
    public void chia() {
        // Lay tu du lieu
        double num1 = Double.parseDouble(tfNum1.getText());
        double num2 = Double.parseDouble(tfNum2.getText());

        // Tinh toan
        double result = num1 / num2;

        // Hien thi ket qua
        tfResult.setText(String.valueOf(result));
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // Khi click btnCong, btnTru, btnNhan, btnChia
        if (e.getActionCommand() == "+") {
            cong();
        } else if (e.getActionCommand() == "-") {
            tru();
        } else if (e.getActionCommand() == "*") {
            nhan();
        } else if (e.getActionCommand() == "/") {
            chia();
        }
    }
}

File MainClass.java:


package usingUI;

import buildUI.SimpleCalculator;

public class MainClass {
    public static void main(String[] args) {
        // Khai bao doi tuong
        SimpleCalculator slculator = new SimpleCalculator("Simple Calculator");
    }
}

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