Làm Một Máy Tính Đơn Giản Bằng Java Swing

Hôm nay mình sẽ giới thiệu cho các bạn về Java Swing và hướng dẫn các bạn cách tạo ra chương trình máy tính đơn giản bằng Java Swing.

Java Swing là gì?

Java Swing là một phần của Java Foundation Classes (JFC) được thiết kế để cho phép phát triển các ứng dụng Java quy mô lớn cho doanh nghiệp. Nó được xây dựng dựa trên Abstract Windowing Toolkit (AWT) Application Interface (API) và được viết bằng Java. Khác với AWT, Java Swing độc lập nền tảng và các thành phần nhẹ hơn.

JFC là một tập hợp các thành phần giao diện mà được phát triển cho các ứng dụng Desktop (ứng dụng đơn lẻ trên từng máy).

Java Swing là một bộ API cung cấp giao diện người dùng đồ họa (GUI) cho các chương trình Java. Java Swing còn được gọi là bộ công cụ widget Java GUI.

Java Swing hoặc Swing được phát triển dựa trên các API trước đó được gọi là Bộ công cụ trừu tượng Windows (AWT). Swing cung cấp các thành phần GUI phong phú và phức tạp hơn AWT. Các thành phần GUI có phạm vi từ một nhãn đơn giản đến cây và bảng phức tạp. Gói cung cấp các lớp cho Java Swing API như JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser…

Gói javax.swing chứa tập hợp các lớp interface mở rộng và cải tiến các thành phần của gói java.awt cho phép tạo giao diện đẹp hơn.

Gói javax.swing không thay thế gói java.awt mà được sử dụng đồng thời trong cùng một giao diện.

Các thành phần của gói javax.swing đều bắt đầu bằng ký tự J như: JButton, JFrame,…

JFrame có cấu trúc nhiều tầng, mỗi tầng tương ứng một Container. Trong đó, tầng trung gian có tên ContentPane, thường được dùng để chứa các đối tượng hiển thị trên giao diện.

Ứng dụng của Java Swing

Swing được sử dụng để xây dựng giao diện người dùng đồ họa (GUI) trong java.

Swing cung cấp một bộ điều khiển nâng cao phong phú như Tree, TabbedPane, thanh trượt, colorpicker và điều khiển bảng.

Các điều khiển xoay có thể được tùy chỉnh theo một cách rất dễ dàng và độc lập với biểu diễn bên trong.

Hướng dẫn cài đặt và cấu hình Eclipse

Các bạn làm theo hướng dẫn chi tiết trên trang này nha.

Cài đặt Eclipse

Lập trình máy tính đơn giản bằng Java Swing

Yêu cầu: 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 ‘+’, ‘-‘, ‘*’, ‘\’. Mỗi khi người dùng ấn chuột vào phép toán, chương trình sẽ tính toán và hiển thị kết quả ở trường Textfield tương ứng.

Đầu tiên chúng ta tạo Project mới.

Sau đó import các thư viện

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

class của chúng ta sẽ extends JFrame và inplements ActionListener

public class SimpleCalculator extends JFrame implements ActionListener { }

Khai báo

	/*Dùng để biểu diễn 4 nút của 4 phép toán +, -, *, / */
	private JButton bt1, bt2, bt3, bt4;
	/*Dùng để chứa 2 số và 1 kết quả*/
	private JTextField tf1, tf2, tf3;
	/*Dùng để lưu trữ kết quả tính toán*/
	private double result;
	/*Dùng để nhận tầng ContentPane của JFrame*/
	private Container cont;
	/*Dùng để nhóm các thành phần trên giao diện*/
	private JPanel panel1, panel2;

Hàm khởi tạo

	/*Hàm khởi tạo*/
	public SimpleCalculator(String s)
	{ 
		super(s);
		/*Lấy lớp ContentPane để đặt các đối tượng hiển thị*/
		cont = this.getContentPane(); 
		
		/*Tạo các thành phần trên giao diện*/
		JLabel num1lb = new JLabel("Num1: ");
		tf1 = new JTextField();
		JLabel num2lb = new JLabel("Num2: ");
		tf2 = new JTextField();
		JLabel resultlb = new JLabel("Result: ");
		tf3 = new JTextField();
		/*Textfield chứa kết quả không được phép sử dụng dữ liệu*/
		tf3.setEditable(false);
		
		/*Panel1 chứa 3 Textfield*/
		panel1 = new JPanel(); 
		/*thiết lập Layout gồm 3 hàng 2 cột*/
		panel1.setLayout(new GridLayout(3,2));
		/*Đặt các thành phần vào panel 1*/
		panel1.add(num1lb); 
		panel1.add(tf1); 
		panel1.add(num2lb); 
		panel1.add(tf2);
		panel1.add(resultlb);
		panel1.add(tf3);
		/*Tạo 4 nút biểu diễn 4 phép toán*/
		bt1 = new JButton("+");
		bt2= new JButton("-");
		bt3 = new JButton("*");
		bt4 = new JButton("/");
		/*Panel2 chứa 4 nút*/
		panel2 = new JPanel();
		panel2.add(bt1);
		panel2.add(bt2);
		panel2.add(bt3);
		panel2.add(bt4);
		
		/*Đặt 2 panel vào ContentPane*/
		cont.add(panel1); 
		cont.add(panel2,"South"); 
		
		bt1.addActionListener(this);
		bt2.addActionListener(this); 
		bt3.addActionListener(this); 
		bt4.addActionListener(this);
		/*Thiết lập kích thước hiển thị*/
		this.pack();
		this.setVisible(true);
	}

Định nghĩa các hàm cộng, trừ, nhân, chia

	/*Định nghĩa hàm cộng*/
	public void doPlus() 
	{ 
	   result = Double.parseDouble(tf1.getText()) + Double.parseDouble(tf2.getText()); 
	   tf3.setText(String.valueOf(result)); 
	}
	/*Định nghĩa hàm trừ*/
	public void doMinus() 
	{ 
		result = Double.parseDouble(tf1.getText()) - Double.parseDouble(tf2.getText());
		tf3.setText(String.valueOf(result));
	}
	/*Định nghĩa hàm nhân*/
	public void doMult() 
	{
		result = Double.parseDouble(tf1.getText()) * Double.parseDouble(tf2.getText());
		tf3.setText(String.valueOf(result)); 
	}
	/*Định nghĩa hàm chia*/
	public void doDiv()
	{
	    result = Double.parseDouble(tf1.getText()) / Double.parseDouble(tf2.getText());
	    tf3.setText(String.valueOf(result));
	}

Định nghĩa lại hàm xử lý khi người dùng ấn các phép toán

	/*Định nghĩ lại hàm xử lý khi người dùng ấn các nút phép toán*/
	public void actionPerformed(ActionEvent e) 
	{ 
		if (e.getActionCommand()=="+")
		doPlus();
		if (e.getActionCommand()=="-")
		doMinus();
		if (e.getActionCommand()=="*")
		doMult();
		if (e.getActionCommand()=="/")
		doDiv();
	
	}

Và cuối cùng là hàm main

	public static void main(String args[])
	{
		/*Tạo giao diện chương trình*/
		SimpleCalculator simpleCalculator = new SimpleCalculator("SimpleCalculator");
		simpleCalculator.setLocationRelativeTo(null);
	}

Chúng ta cùng xem toàn bộ source code nào

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

public class SimpleCalculator extends JFrame implements ActionListener { 
	
	/*Dùng để biểu diễn 4 nút của 4 phép toán +, -, *, / */
	private JButton bt1, bt2, bt3, bt4;
	/*Dùng để chứa 2 số và 1 kết quả*/
	private JTextField tf1, tf2, tf3;
	/*Dùng để lưu trữ kết quả tính toán*/
	private double result;
	/*Dùng để nhận tầng ContentPane của JFrame*/
	private Container cont;
	/*Dùng để nhóm các thành phần trên giao diện*/
	private JPanel panel1, panel2;

	/*Hàm khởi tạo*/
	public SimpleCalculator(String s)
	{ 
		super(s);
		/*Lấy lớp ContentPane để đặt các đối tượng hiển thị*/
		cont = this.getContentPane(); 
		
		/*Tạo các thành phần trên giao diện*/
		JLabel num1lb = new JLabel("Num1: ");
		tf1 = new JTextField();
		JLabel num2lb = new JLabel("Num2: ");
		tf2 = new JTextField();
		JLabel resultlb = new JLabel("Result: ");
		tf3 = new JTextField();
		/*Textfield chứa kết quả không được phép sử dụng dữ liệu*/
		tf3.setEditable(false);
		
		/*Panel1 chứa 3 Textfield*/
		panel1 = new JPanel(); 
		/*thiết lập Layout gồm 3 hàng 2 cột*/
		panel1.setLayout(new GridLayout(3,2));
		/*Đặt các thành phần vào panel 1*/
		panel1.add(num1lb); 
		panel1.add(tf1); 
		panel1.add(num2lb); 
		panel1.add(tf2);
		panel1.add(resultlb);
		panel1.add(tf3);
		/*Tạo 4 nút biểu diễn 4 phép toán*/
		bt1 = new JButton("+");
		bt2= new JButton("-");
		bt3 = new JButton("*");
		bt4 = new JButton("/");
		/*Panel2 chứa 4 nút*/
		panel2 = new JPanel();
		panel2.add(bt1);
		panel2.add(bt2);
		panel2.add(bt3);
		panel2.add(bt4);
		
		/*Đặt 2 panel vào ContentPane*/
		cont.add(panel1); 
		cont.add(panel2,"South"); 
		
		bt1.addActionListener(this);
		bt2.addActionListener(this); 
		bt3.addActionListener(this); 
		bt4.addActionListener(this);
		/*Thiết lập kích thước hiển thị*/
		this.pack();
		this.setVisible(true);
	}

	/*Định nghĩa hàm cộng*/
	public void doPlus() 
	{ 
	   result = Double.parseDouble(tf1.getText()) + Double.parseDouble(tf2.getText()); 
	   tf3.setText(String.valueOf(result)); 
	}
	/*Định nghĩa hàm trừ*/
	public void doMinus() 
	{ 
		result = Double.parseDouble(tf1.getText()) - Double.parseDouble(tf2.getText());
		tf3.setText(String.valueOf(result));
	}
	/*Định nghĩa hàm nhân*/
	public void doMult() 
	{
		result = Double.parseDouble(tf1.getText()) * Double.parseDouble(tf2.getText());
		tf3.setText(String.valueOf(result)); 
	}
	/*Định nghĩa hàm chia*/
	public void doDiv()
	{
	    result = Double.parseDouble(tf1.getText()) / Double.parseDouble(tf2.getText());
	    tf3.setText(String.valueOf(result));
	} 
	
	/*Định nghĩ lại hàm xử lý khi người dùng ấn các nút phép toán*/
	public void actionPerformed(ActionEvent e) 
	{ 
		if (e.getActionCommand()=="+")
		doPlus();
		if (e.getActionCommand()=="-")
		doMinus();
		if (e.getActionCommand()=="*")
		doMult();
		if (e.getActionCommand()=="/")
		doDiv();
	
	}
	
	public static void main(String args[])
	{
		/*Tạo giao diện chương trình*/
		SimpleCalculator simpleCalculator = new SimpleCalculator("SimpleCalculator");
		simpleCalculator.setLocationRelativeTo(null);
	}
}

Kết Quả

Cuối cùng là Run và xem kết quả thôi.

Cảm ơn các bạn đã theo dõi bài viết. Nếu có bất kỳ thắc mắc nào hãy để lại comment phía dưới. Nếu thấy bài viết này bổ ích thì hãy share cho mọi người cùng biết nha. Cảm ơn các bạn.