Lớp JButton trong Java Swing



Lớp JButton được sử dụng để tạo một nút button mà có trình triển khai là độc lập nền tảng. Thành phần này có một label và tạo một sự kiện (event) khi được nhấn. Nó cũng có thể có Image.

Cú pháp khai báo cho lớp javax.swing.JButton là:

public class JButton
   extends AbstractButton
      implements Accessible

Lớp này kế thừa các phương thức từ các lớp sau:

  • javax.swing.AbstractButton

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

Lớp JButton có các constructor sau:

1. JButton(): Tạo một button mà không thiết lập text hoặc icon.

2. JButton(Action a): Tạo một button tại đây các thuộc tính được nhận từ Action đã cung cấp.

3. JButton(Icon icon): Tạo một button với một icon.

4. JButton(String text): Tạo một button với text.

5. JButton(String text, Icon icon): Tạo một button với text ban đầu và một icon.

Các phương thức được sử dụng phổ biến của lớp JButton

1. void removeNotify(): Ghi đè JComponent.removeNotify để kiểm tra xem button này hiện tại được thiết lập như là button mặc định trên RootPane hay không, và nếu có, thiết lập button mặc định của RootPane về null để bảo đảm rằng Rootpane không giữ một tham chiếu button không hợp lệ.

2. void setDefaultCapable(boolean defaultCapable): Thiết lập thuộc tính defaultCapable, mà quyết định xem có hay không button này có thể được tạo là button mặc định cho Root Pane của nó

3. void updateUI(): Phục hồi thuộc tính UI về một giá trị từ L&F hiện tại

Một số phương thức được sử dụng phổ biến của của lớp AbstractButton

1. public void setText(String s): được sử dụng để thiết lập text đã cho trên button.

2. public String getText(): được sử dụng để trả về text của button.

3. public void setEnabled(boolean b): được sử dụng để kích hoạt hoặc vô hiệu hóa button.

4. public void setIcon(Icon b): được sử dụng để thiết lập Icon đã cho trên button.

5. public Icon getIcon(): được sử dụng để lấy Icon của button.

6. public void setMnemonic(int a): được sử dụng để thiết lập thuộc tính mnemonic trên button.

7. public void addActionListener(ActionListener a): được sử dụng để thêm action listener tới đối tượng này.

Chương trình đơn giản để hiển thị hình ảnh trên button

import java.awt.event.*;  
import javax.swing.*;  
  
public class ImageButton{  
ImageButton(){  
JFrame f=new JFrame();  
                  
          
JButton b=new JButton(new ImageIcon("b.jpg"));  
b.setBounds(130,100,100, 40);  
      
f.add(b);  
          
f.setSize(300,400);  
f.setLayout(null);  
f.setVisible(true);  
          
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
          
    }  
      
public static void main(String[] args) {  
    new ImageButton();  
}  
}  

Chương trình ví dụ khác về lớp JButton

SwingControlDemo.java
package com.vietjack.gui;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class SwingControlDemo {
    
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;

   public SwingControlDemo(){
      prepareGUI();
   }

   public static void main(String[] args){
      SwingControlDemo  swingControlDemo = new SwingControlDemo();      
      swingControlDemo.showButtonDemo();
   }

   private void prepareGUI(){
      mainFrame = new JFrame("Vi du Java Swing");
      mainFrame.setSize(400,400);
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
            System.exit(0);
         }        
      });    
      headerLabel = new JLabel("", JLabel.CENTER);        
      statusLabel = new JLabel("",JLabel.CENTER);    

      statusLabel.setSize(350,100);

      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());

      mainFrame.add(headerLabel);
      mainFrame.add(controlPanel);
      mainFrame.add(statusLabel);
      mainFrame.setVisible(true);  
   }
    
   private static ImageIcon createImageIcon(String path, 
      String description) {
      java.net.URL imgURL = SwingControlDemo.class.getResource(path);
      if (imgURL != null) {
         return new ImageIcon(imgURL, description);
      } else {            
         System.err.println("Couldn't find file: " + path);
         return null;
      }
   }   

   private void showButtonDemo(){

      headerLabel.setText("Control in action: Button"); 

      //resource folder nen o ben trong SWING folder.
      ImageIcon icon = createImageIcon("/resources/java_icon.png","Java");

      JButton okButton = new JButton("OK");        
      JButton javaButton = new JButton("Submit", icon);
      JButton cancelButton = new JButton("Cancel", icon);
      cancelButton.setHorizontalTextPosition(SwingConstants.LEFT);   

      okButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            statusLabel.setText("Ok Button clicked.");
         }          
      });

      javaButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            statusLabel.setText("Submit Button clicked.");
         }
      });

      cancelButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            statusLabel.setText("Cancel Button clicked.");
         }
      });

      controlPanel.add(okButton);
      controlPanel.add(javaButton);
      controlPanel.add(cancelButton);       

      mainFrame.setVisible(true);  
   }
}

Mọi người cho thể tham gia khóa học thứ 4 của vietjackteam vào cuối tháng 09/2017 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Khóa học cũng đưa 200 câu hỏi phỏng vấn java trên https://www.javatpoint.com/corejava-interview-questions vào nội dung để giúp các bạn dễ dàng vượt qua kì phỏng vấn

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Thông tin khóa học tại Khóa học Java Online trên Udemy

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


swing_control_trong_java_swing.jsp

Demo một bài giảng trong khóa học online tại vietjackteam.