Cách tạo ứng dụng GUI trong Java
Tổng quan
Trong java, swing được sử dụng để xây dựng ứng dụng GUI. Nó có các tính năng khác nhau và được sử dụng phổ biến để xây dựng các ứng dụng GUI trong java. Trong bài viết này, chúng tôi sẽ đề cập đến tất cả về thư viện swing trong Java.
Đu quay Java
Swing được phát triển bằng java thuần túy. Các thành phần xích đu có thể có giao diện giống nhau trên tất cả các nền tảng và mang lại giao diện có thể cắm được. Các thành phần xoay có trọng lượng nhẹ.
Ví dụ:
Một chương trình java để hiển thị quảng cáo và hiển thị khung
nhập javax.swing.*;
lớp F1 mở rộng JFrame{
F1() {
setSize(200,200);
setTitle(“GUI DEMO”);
setLocation(100,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]){
F1 f= mới F1();
}
}
Đầu ra:
javac F1.java
Java F1
Phân cấp vùng chứa
Vùng chứa cấp cao nhất:
- Nơi để các thành phần xoay khác tự sơn
- Ví dụ. JFrame, JDialog, JApplet
- Đơn giản hóa việc định vị các thành phần nguyên tử
- Ví dụ: JPanel, JSplitPane, JTabbedPane
- Các thành phần tự túc trình bày thông tin và nhận thông tin đầu vào từ người dùng
- Ví dụ: JButton, JLabel, JComboBox, JTextField, JTable
- JButton là một triển khai của nút “push”
- Các nút có thể được cấu hình và ở một mức độ nào đó được kiểm soát bởi các hành động
- JOptionPane giúp dễ dàng bật lên hộp thoại tiêu chuẩn nhắc người dùng về một giá trị hoặc thông báo cho họ về điều gì đó.
- Mặc dù lớp này có vẻ phức tạp do số lượng lớn các phương thức, hầu hết tất cả các cách sử dụng của lớp này đều là các lệnh gọi một dòng tới một trong các phương thức tĩnh được hiển thị bên dưới:
Giống như một lớp có thể có các biến và phương thức với tư cách là thành viên, lớp cũng có thể chứa một lớp khác được gọi là lớp Lồng nhau.
Khái niệm về các lớp bên trong đã được giới thiệu trong java 1.1
Có một số lợi ích của việc sử dụng các lớp bên trong:
- Làm cho mã của bạn dễ đọc hơn
- Cho phép các lớp tiện ích được gói gọn trong lớp bằng cách sử dụng nó
- Đơn giản hóa quá trình viết một lớp, do đó thực sự khuyến khích các nhà phát triển hướng đối tượng hơn.
Các loại lớp bên trong như sau:
- Lớp bên trong thành viên
- lớp bên trong tĩnh
- Lớp bên trong cục bộ
- Lớp ẩn danh
Xử lý sự kiện bằng cách sử dụng lớp bên trong thành viên:
nhập javax.swing.*;
nhập java.awt.*;
nhập java.awt.event.*;
lớp M1 mở rộng JFrame
{
Thùng chứa c;
JButton b1, b2;
lớp L1 thực hiện ActionListener
{
public void actionPerforming(ActionEvent ae){
if(ae.getSource()==b1)
{
JOptionPane.showMessageDialog(c, “Bạn đã nhấp vào nút 1”);
}
if(ae.getSource()==b2)
{
JOptionPane.showMessageDialog(c,”Bạn đã nhấp vào nút 2”);
}
}
}
M1()
{
c=getContentPane();
c.setLayout(FlowLayout() mới);
b1=new JButton(“Click 1”);
b2= new JButton(“Click 2”);
c.add(b1);
c.add(b2);
L1 a= mới L1();
b1.addActionListener(a);
b2.addActionListener(a);
}
public static void main(String args[]){
M1 f= M1 mới();
f.setSize(200,200);
f.setTitle(“Nhấp vào nút”);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Trình quản lý bố cục
Trình quản lý bố cục của Java xác định cách các thành phần sẽ được sắp xếp khi chúng được thêm vào khung. Gói AWT bao gồm các lớp bố cục sau:
- FlowLayout
- Bố cục đường viền
- GridLayout
FlowLayout
Bố cục dòng sắp xếp các thành phần theo dòng có hướng, giống như các dòng văn bản trong một đoạn văn, cho đến khi không còn chỗ trống, sau đó chuyển sang dòng tiếp theo.
Theo mặc định, các thành phần được căn giữa. Lập trình viên có thể chỉ định căn chỉnh bằng cách sử dụng một trong các đối số sau với hàm tạo:
- FlowLayout.LEFT
- FlowLayout.CENTER
- FlowLayout.RIGHT
Bố cục đường viền tạo ra một vùng chứa, sắp xếp và thay đổi kích thước các thành phần của nó để phù hợp với năm vùng: bắc, nam, đông, tây và trung tâm.
Mỗi vùng có thể chứa không quá một thành phần và được xác định bởi một hằng số tương ứng: BẮC, NAM, ĐÔNG, TÂY và TRUNG TÂM.
Lập trình viên có thể chỉ định vùng bằng cách sử dụng thông tin sau trong phương thức thêm:
- add(“Bắc”, b1);
- add(“Nam”,b2);
- add(“Đông”,b3);
- add(“Tây”,b4);
- add(“Trung tâm”,b5);
- thêm(BorderLayout.NORTH,b1);
- thêm(BorderLayout.SOUTH,b2);
- thêm(BorderLayout.EAST,b3);
- thêm(BorderLayout.WEST,b4);
- thêm(BorderLayout.CENTER,b5);
Lưu ý2 : Quá trình biên dịch không thành công nếu tên hằng không viết hoa như được hiển thị.
Note3 : Ở trên cũng có thể được kết hợp.
JLabel
JLabel là vùng hiển thị cho một chuỗi văn bản ngắn hoặc một hình ảnh hoặc cả hai. Nhãn không phản ứng với các sự kiện đầu vào.
Chương trình:
nhập java.awt.*;
nhập javax.swing.*;
nhập java.awt.event.*;
lớp S2 mở rộng JFrame{
Thùng chứa c;
JTextField txt1;
JButton btn1;
JNhãn lbl1, lbl2;
S2(){
c=getContentPane();
c.setLayout(FlowLayout() mới);
lbl1= new JLabel(“Nhập số”);
txt1= JTextField mới(10);
btn1= new JButton(“Trả lời”);
lbl2= JLabel mới();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(L2() mới);
}
public static void main(String args[]){
S2 frm= mới S2();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Trình Tìm Vuông”);
frm.setVisible(true);
}
lớp L2 triển khai ActionListener{
public void actionPerforming(ActionEvent ae){
thử{
int a= Số nguyên.ParseInt(txt1.getText());
float s= a*a;
lbl2.setText(“Hình vuông=”+s);
}
bắt (NumberFormatException e) {
JOptionPane.showMessageDialog(c,"Vui lòng nhập số nguyên");
txt1.setText(“ “);
txt1.requestFocus();
}
}
}
}
Xử lý các sự kiện trên bàn phím
Chương trình:
nhập java.awt.*;
nhập javax.swing.*;
nhập java.awt.event.*;
lớp S7 mở rộng JFrame{
Thùng chứa c;
JTextField txt1;
JButton btn1;
JNhãn lbl1, lbl2;
S7(){
c=getContentPane();
c.setLayout(FlowLayout() mới);
lbl1= new JLabel(“Nhập số”);
txt1= JTextField mới(10);
btn1= new JButton(“Trả lời”);
lbl2= JLabel mới();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(L2() mới);
btn1.addKeyListener(L3() mới);
}
public static void main(String args[]){
S7 frm= mới S7();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Trình Tìm Vuông”);
frm.setVisible(true);
}
lớp L3 thực hiện KeyListener
{
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode()==KeyEvent.VK_ENTER);
thử{
int a= Integer.parseInt(txt1.getText());
float s= a*a;
lbl2.setText('Square='+s');
}
bắt (NumberFormatException e) {
JOptionPane.showMessageDialog(c,"Vui lòng nhập số nguyên");
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
public void keyRelease(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
lớp L2 triển khai ActionListener{
public void actionPerforming(ActionEvent ae){
thử{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Hình vuông=”+s);
}
bắt (NumberFormatExcepption e) {
JOptionPane.showMessageDialog(c,"Vui lòng nhập số nguyên");
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
}
Xử lý sự kiện Windows
Chương trình :
nhập java.awt.*;
nhập javax.swing.*;
nhập java.awt.event.*;
lớp S8 mở rộng JFrame{
Thùng chứa c;
JTextField txt1;
JButton btn1;
JNhãn lbl1, lbl2;
S8(){
c=getContentPane();
c.setLayout(FlowLayout() mới);
lbl1= new JLabel(“Nhập số”);
txt1= JTextField mới(10);
btn1= new JButton(“Trả lời”);
lbl2= JLabel mới();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(L2() mới);
btn1.addKeyLisener(L3() mới);
this.addWindowListener(new L4());
}
public static void main(String args[]){
S8 frm= mới S8();
frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“Trình Tìm Vuông”);
frm.setVisible(true);
}
lớp L4 thực hiện WindowListener{
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowOpened(WindowEvent e){
JOptionPane.showMessageDialog(c,”Chào mừng đến với Máy tính Vuông”);
}
public void windowClosed(WindowEvent e){}
public void windowClosing(WindowEvent e){
int output= JOptionPane.showConfirmDialog(c,"Bạn có muốn thoát");
if(output==JOptionPane.YES_OPTION){
System.exit(1);
}
}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
lớp L2 triển khai ActionListener{
public void actionPerforming(ActionEvent ae){
thử{
int a=Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Hình vuông=”+s);
}
bắt (NumberFormatException e) {
JOptionPane.showMessageDialog(c,"Vui lòng nhập số nguyên");
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
lớp L3 triển khai KeyListener{
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_ENTER){
thử{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Hình vuông=”+s);
}
bắt (NumberFormatException e) {
JOptionPane.showMessageDialog(c,"Vui lòng nhập số nguyên");
txt1.setText(“”);
txt1.requestFocus();
lbl2.setText(“”);
}
}
}
public void keyRelease(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
}
Phần kết luận
Swing được phát triển bằng java thuần túy và được sử dụng rộng rãi vì nó có giao diện giống nhau trên tất cả các nền tảng và cung cấp giao diện có thể cắm được. Tôi hy vọng bạn thích bài viết này, hãy cho tôi biết nếu có bất kỳ phản hồi nào. :) ❤️

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































