Lớp JColorChooser trong Java Swing



Lớp JColorChooser cung cấp một pane cho các control được thiết kế để cho phép người dùng thao tác và lựa chọn một màu. Cú pháp khai báo cho lớp javax.swing.JColorChooser là:

public class JColorChooser
   extends JComponent
      implements Accessible

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

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

Lớp JColorChooser này có các trường sau:

  • protected AccessibleContext accessibleContext

  • static String CHOOSER_PANELS_PROPERTY − là tên thuộc tính của mảng chooserPanel.

  • static String PREVIEW_PANEL_PROPERTY − là tên thuộc tính preview panel.

  • static String SELECTION_MODEL_PROPERTY − là tên thuộc tính selection model.

Lớp JColorChooser có 3 constructor sau:

1. JColorChooser(): Tạo một bảng chọn màu với một màu ban đầu là màu trắng.

2. JColorChooser(Color initialColor): Tạo một bảng chọn màu với màu khởi tạo đã cho.

3. JColorChooser(ColorSelectionModel model): Tạo một bảng chọn màu với ColorSelectionModel đã cho.

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

STT Phương thức & Miêu tả
1 void addChooserPanel(AbstractColorChooserPanel panel)

Thêm một bảng chọn màu tới ColorChooser

2 static JDialog createDialog(Component c, String title, boolean modal, JColorChooser chooserPane, ActionListener okListener, ActionListener cancelListener)

Tạo và trả về một hộp thoại dialog chứa bảng ColorChooser cùng với các nút "OK", "Cancel", và "Reset"

3 AbstractColorChooserPanel removeChooserPanel(AbstractColorChooserPanel panel)

Xóa Color Panel đã cho

4 void setChooserPanels(AbstractColorChooserPanel[] panels)

Xác định Color Panels được sử dụng để chọn một giá trị màu

5 void setColor(Color color)

Thiết lập màu hiện tại của Color Chooser tới màu đã cho

6 void setColor(int c)

Thiết lập màu hiện tại của Color Chooser tới màu đã cho

7 void setColor(int r, int g, int b)

Thiết lập màu hiện tại của Color Chooser tới màu RBG đã cho

8 void setDragEnabled(boolean b)

Thiết lập thuộc tính dragEnabled, mà phải là true để kích hoạt bộ xử lý hoạt động drag tự động (phần đầu tiên của hoạt động drag và drop) trên thành phần này

9 void setPreviewPanel(JComponent preview)

Thiết lập Prview Panel hiện tại

10 void setSelectionModel(ColorSelectionModel newModel)

Thiết lập Model chứa màu đã chọn

11 void setUI(ColorChooserUI ui)

Thiết lập đối tượng L&F mà truyền đối tượng này

12 static Color showDialog(Component component, String title, Color initialColor)

Hiển thị một hộp thoại dialog

13 void updateUI()

Thông báo từ UIManager rằng L&F đã thay đổi

Chương trình ví dụ về lớp JColorChooser

import java.awt.event.*;  
import java.awt.*;  
import javax.swing.*;  
  
public class JColorChooserExample extends JFrame implements ActionListener{  
JButton b;  
Container c;  
  
JColorChooserExample(){  
    c=getContentPane();  
    c.setLayout(new FlowLayout());  
      
    b=new JButton("color");  
    b.addActionListener(this);  
      
    c.add(b);  
}  
  
public void actionPerformed(ActionEvent e) {  
Color initialcolor=Color.RED;  
Color color=JColorChooser.showDialog(this,"Select a color",initialcolor);  
c.setBackground(color);  
}  
  
public static void main(String[] args) {  
    JColorChooserExample ch=new JColorChooserExample();  
    ch.setSize(400,400);  
    ch.setVisible(true);  
    ch.setDefaultCloseOperation(EXIT_ON_CLOSE);  
}  
}  

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

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.showColorChooserDemo();
   }

   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 void showColorChooserDemo(){
      headerLabel.setText("Control in action: JColorChooser"); 

      JButton chooseButton = new JButton("Choose Background");        
      chooseButton.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            Color backgroundColor = JColorChooser.showDialog(mainFrame,
               "Choose background color", Color.white);
            if(backgroundColor != null){
               controlPanel.setBackground(backgroundColor);
               mainFrame.getContentPane().setBackground(backgroundColor);
            }
         }
      });

      controlPanel.add(chooseButton);
      mainFrame.setVisible(true);  
   }
}

Mọi người cho thể tham gia khóa học thứ 3 của vietjackteam vào đầu tháng 07/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.