1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề Java Bài 04

37 20 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,61 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

JCheckBox Lớp JCheckBox là một trình triển khai của một checkbox, là một item mà có thể được lựa chọn selected hoặc không được lựa chọn unselected,.. Minh họa JCheckbox Khai báo cho lớp

Trang 1

BÀI 4: LẬP TRÌNH GIAO DIỆN VỚI SWING NÂNG CAO

Học xong bài này người học sẽ:

- Tiếp tục phát triển tổ chức một giao diện người dùng đồ họa với các control khác

- Lập trình tùy biến các đối tượng GUI dạng danh sách như: JCheckBox, JRadio, JComboBox, Jlist

- Các control nâng cao khác: JTable, JColorChoose, JTabedPane, JSlider

- Thiết kế Menu: MenuBar, Menu, MenuItem, PopupMenu, Toolbar

- Thiết kế giao diện người dùng với các control nâng cao trên công cụ trực quan NetBeans IDE

- Kỹ năng tự tìm hiểu và sử dụng các GUI component khác có sẵn trong thư viện

4.1 CÁC CONTROL DANH SÁCH

4.1.1 JCheckBox

Lớp JCheckBox là một trình triển khai của một checkbox, là một item mà có thể được lựa chọn (selected) hoặc không được lựa chọn (unselected), Người dùng có thể chọn cùng lúc nhiều lựa chọn

Hình 4.1 Minh họa JCheckbox Khai báo cho lớp:

public class JCheckBox extends JToggleButton implements Accessible

Các constructor của lớp JcheckBox:

- JCheckBox(): Tạo một unselected checkbox ban đầu không có text và icon

- JCheckBox(Action a): Tạo một checkbox, với các thuộc tính được lấy từ Action

- JCheckBox(Icon icon): Tạo một unselected checkbox với một icon

Trang 2

- JCheckBox(Icon icon, boolean selected): Tạo một checkbox với một icon và xác định rằng ban đầu nó là selected hoặc không

- JCheckBox(String text): Tạo một unselected checkbox ban đầu với text

- JCheckBox(String text, boolean selected): Tạo một checkbox với text và xác định rằng ban đầu nó là selected hoặc không

- JCheckBox(String text, Icon icon): Tạo một unselected checkbox ban đầu với text và icon đã cho

- JCheckBox(String text, Icon icon, boolean selected): Tạo một checkbox với text và icon, và xác định rằng ban đầu nó là selected hoặc không

Các phương thức quan trọng của JcheckBox là:

boolean isSelected() Trả về true nếu JCheckBox đang được chọn và

ngược lại setSelected(boolean state) Thiết lập chọn hoặc bỏ chọn

getAccessibleContext() Lấy AccessibleContext được liên kết với JCheckBox isBorderPaintedFlat() Lấy giá trị của thuộc tính borderPaintedFlat

paramString() Trả về một biểu diễn chuỗi của JCheckBox này

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

Bảng 4.1: Các phương thức của JcheckBox

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

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JCheckboxDemo {

private JFrame mainFrame;

private JLabel headerLabel;

private JLabel statusLabel;

private JPanel controlPanel;

public JCheckboxDemo(){

prepareGUI();

}

public static void main(String[] args){

JCheckboxDemo swingControlDemo = new JCheckboxDemo();

swingControlDemo.showCheckBoxDemo();

}

private void prepareGUI(){

mainFrame = new JFrame("Vi du JCheckbox");

mainFrame.setSize(400,200);

mainFrame.setLayout(new GridLayout(3, 1));

Trang 3

headerLabel = new JLabel("", JLabel.CENTER);

statusLabel = new JLabel("",JLabel.CENTER);

private void showCheckBoxDemo(){

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

final JCheckBox chkApple = new JCheckBox("Apple");

final JCheckBox chkMango = new JCheckBox("Mango");

final JCheckBox chkPeer = new JCheckBox("Peer");

public void itemStateChanged(ItemEvent e) {

statusLabel.setText("Apple Checkbox: " + (e.getStateChange()==1?

"checked":"unchecked")); }

});

chkMango.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

statusLabel.setText("Mango Checkbox: " + (e.getStateChange()==1?

"checked":"unchecked")); }

});

chkPeer.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

statusLabel.setText("Peer Checkbox: " + (e.getStateChange()==1?

"checked":"unchecked")); }

Trang 4

Kết quả:

Hình 4.2 Kết quả minh họa JCheckbox

Tạo JCheckbox trong NetBeans:

Hình 4.3 Màn hình thiết kế Jcheckbox trên Netbeans

4.1.2 JRadioButton

Lớp JRadioButton là một trình triển khai của một radio button, một item mà có thể được lựa chọn hoặc không, tại một thời điểm chỉ cho phép chọn một

Khi tạo nhiều JRadioButton, chúng ta phải kết hợp với Button Group để ràng buộc

thao tác chọn của người dùng (tại một thời điểm chỉ có một JRadioButton được chọn)

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

public class JradioButton extends JtoggleButton implements Accessible

Các constructor được sử dụng phổ biến của lớp JRadioButton:

- JRadioButton(): Tạo một unselected radiobutton không có text

- JRadioButton(String s): Tạo một unselected radiobutton với text đã cho

- JRadioButton(String s, boolean selected): Tạo một radiobutton với text đã cho

và trạng thái là selected

Các phương thức của lớp JradioButton

getAccessibleContext() Lấy AccessibleContext được liên kết với

Trang 5

JRadioButton getUIClassID() Trả về tên của lớp L&F mà truyền thành phần này

paramString() Trả về biểu diễn chuỗi của JRadioButton này

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

Bảng 4.2: Các phương thức của JRadioButton Chương trình ví dụ về lớp JRadioButton

import javax.swing.*;

public class JRadioButtonDemo {

JFrame f;

JRadioButtonDemo(){

f=new JFrame("Vi du JRadioButton Demo");

JRadioButton r1=new JRadioButton("A) Male");

JRadioButton r2=new JRadioButton("B) FeMale");

Hình 4.3 Kết quả minh họa JRadioButton

Tạo JRadioButton trong NetBeans:

Trang 6

Hình 4.4 Màn hình thiết kế JRadioButton trên Netbeans

4.1.3 RadioButtonGroup

Lớp ButtonGroup có thể được sử dụng để nhóm nhiều lớp lại với nhau, để tại một thời

điểm, chỉ có một nút được lựa chọn Ví dụ:

Trang 7

Hình 4.5 Kết quả minh họa JRadioButton

Gắn JRadioButton vào Button Group:

Hình 4.6: Minh họa gắn Button Group

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

public class JComboBox extends JComponent

implements ItemSelectable, ListDataListener, ActionListener, Accessible Các constructor của lớp JcomboBox:

- JComboBox(): Tạo một JComboBox với data model mặc định

Trang 8

- JComboBox(Object[] items): Tạo một JComboBox mà chứa các phần tử trong mảng đã cho

- JComboBox(Vector<?> items): Tạo một JComboBox mà chứa các phần tử trong Vector đã cho

Các phương thức của lớp JcomboBox:

addItem(Object anObject) Thêm một item tới list

removeItem(Object anObject) Để xóa một item từ list

removeAllItems() Để xóa tất cả item từ list

setEditable(boolean b) Xác định xem có hay không JComboBox là

editable

addActionListener(ActionListener a) Để thêm ActionListener

addItemListener(ItemListener i) Để thêm ItemListener

Bảng 4.3: Các phương thức của JComboBox Chương trình minh họa lớp JcomboBox:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JComboBoxDemo {

private JFrame mainFrame;

private JLabel headerLabel;

private JLabel statusLabel;

private JPanel controlPanel;

public JComboBoxDemo(){

prepareGUI();

}

public static void main(String[] args){

JComboBoxDemo swingControlDemo = new JComboBoxDemo();

swingControlDemo.showComboboxDemo();

}

private void prepareGUI(){

mainFrame = new JFrame("JComboBox Demo");

headerLabel = new JLabel("", JLabel.CENTER);

statusLabel = new JLabel("",JLabel.CENTER);

Trang 9

private void showComboboxDemo(){

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

final DefaultComboBoxModel fruitsName = new DefaultComboBoxModel(); fruitsName.addElement("Apple");

JScrollPane fruitListScrollPane = new JScrollPane(fruitCombo);

JButton showButton = new JButton("Show");

Trang 10

Tạo JCombobox trong NetBeans:

Hình 4.8: Minh họa thiết kế JCombobox trên NetBeans

Kết quả thu được sau khi chạy ứng dụng:

Hình 4.9: Kết quả thiết kế JButton

4.1.5 Jlist

JList là một control cho phép chứa nhiều item, các item có thể được hiển thị thành một hoặc nhiều cột Người sử dụng có thể chọn một hoặc nhiều item trong JList (Single-selection vs multiple-selection) Một ListModel duy trì các nội dung của list

Hình 4.10: Minh họa JList

Trang 11

Cú pháp khai báo của lớp javax.swing.JList là:

public class Jlist extends Jcomponent implements Scrollable, Accessible

Các constructor của lớp JList :

- JList(): Xây dựng một JList với một model là empty, read-only

- JList(ListModel dataModel): Xây dựng một JList, hiển thị các phần tử từ model

- JList(Object[] listData): Xây dựng một JList mà hiển thị các phần tử trong mảng

- JList(Vector<?> listData): Xây dựng một JList mà hiển thị các phần tử trong

Vector

Các phương thức của lớp JList :

Bảng 4.4: Các phương thức của JList Chương trình ví dụ lớp jlist

import java.awt.*;

ensureIndexIsVisible(int index) Cuộn danh sách bên trong một viewport

getSelectedValue() Lấy giá trị mục được chọn của JList

getAccessibleContext() Lấy AccessibleContext được liên kết với JList getFirstVisibleIndex() Trả về chỉ mục nhỏ nhất của list

getLastVisibleIndex() Trả về chỉ mục lớn nhất của list

getPreferredScrollableViewportSize() Tính toán kích cỡ của viewport cần để hiển thị removeListSelectionListener

(ListSelectionListener listener) Xóa một selection listener từ list này

setDragEnabled(boolean b) Tắt hoặc bật bộ xử lý hoạt động drag mặc định setDropMode(DropMode dropMode) Thiết lập drop mode cho thành phần này

setFixedCellHeight(int height) Thiết lập một giá trị cố định để được sử dụng

cho chiều cao của mỗi ô trong list setLayoutOrientation

(int layoutOrientation)

Định nghĩa cách các ô trong list được bố trí

setModel(ListModel model) Thiết lập model biểu diễn các nội dung hoặc

"value" của list setSelectedIndex(int index) Lựa chọn một ô đơn

setSelectedIndices(int[] indices) Thay đổi selection thành là tập hợp các chỉ

mục được xác định bởi mảng đã cho setSelectionBackground

Trang 12

import java.awt.event.*;

import javax.swing.*;

public class JListDemo{

private JFrame mainFrame;

private JLabel headerLabel;

private JLabel statusLabel;

private JPanel controlPanel;

public JListDemo(){

prepareGUI();

}

public static void main(String[] args){

JListDemo swingControlDemo = new JListDemo();

swingControlDemo.showListDemo();

}

private void prepareGUI(){

mainFrame = new JFrame("JList Demo");

headerLabel = new JLabel("", JLabel.CENTER);

statusLabel = new JLabel("",JLabel.CENTER);

private void showListDemo(){

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

final DefaultListModel fruitsName = new DefaultListModel();

Trang 13

fruitList.setVisibleRowCount(3);

JScrollPane fruitListScrollPane = new JScrollPane(fruitList);

JButton showButton = new JButton("Show");

Hình 4.11: Kết quả minh họa JList

Thiết kế Jlist trên NetBeans:

Hình 4.12: Minh họa thiết kế JList trên NetBeans

Trang 14

Đăng ký sự kiện cho Jlist:

Chuột phải vào JList -> chọn Events -> chọn ListSelection -> chọn valueChanged

Hình 4.13: Minh họa đăng ký sự kiện cho JList trên NetBeans Lấy dữ liệu của dòng được chọn trong JList

String data = (String)jList2.getSelectedValue();

Trong đó jList2 là tên của JList, data là biến chứa dữ liệu của dòng được chọn

4.2 CÁC THÀNH PHẦN SWING NÂNG CAO

4.2.1 JTable

JTable là một thành phần cho phép hiển thị dữ liệu theo dòng (row) và cột (column) Giao nhau giữa dòng và cột được gọi là ô (cell) và đây là nơi hiển thị dữ liệu Một JTable có

2 phần là Column Header (tiêu đề) và Data (dữ liệu)

Các constructor của lớp JTable :

- JTable(): Tạo một bảng với các ô trống

- JTable(Object[][] rows, Object[] columns): Tạo một bảng với dữ liệu đã cho

Chương trình minh họa JTable:

import javax.swing.*;

public class JTableDemo {

JFrame f;

JTableDemo(){

f=new JFrame("JTable Demo");

String data[][]={ {"101","Amit","670000"}, {"102","Jai","780000"},

{"101","Sachin","700000"}}; String column[]={"ID","NAME","SALARY"};

JTable jt=new JTable(data,column);

Trang 15

Hình 4.14: Kết quả minh họa đăng ký JTable

Tạo JTable sử dụng NetBeans

Hình 4.15: Minh họa thiết kế JTable trên NetBeans

Đăng ký sự kiện cho JTable:

Ckick phải vào JTable -> chọn Events -> chọn Mouse -> chọn mouseClicked

Trang 16

Hình 4.16: Minh họa đăng ký sự kiện JTable trên NetBeans

Lấy dữ liệu của ô được chọn trong JTable

int col = jTable2.getSelectedColumn();

int row = jTable2.getSelectedRow();

String data = (String)jTable2.getValueAt(row, col);

Trong đó jTable2 là tên của JTable, data là biến chứa dữ liệu của ô được chọn

4.2.2 JColorChooser

JColorChooser được sử dụng để hiển thị hộp thoại màu và cho phép người dùng lựa chọn một màu trong hộp thoại đó Có 2 cách để tạo JColorChooser trong NetBeans đó là sử

dụng chế độ Design và kéo JColorChooser từ Swing Windows của Palette

Hai là sử dụng code để hiển thị JColorChooser khi người dùng click vào button hoặc textfield, …Lập trình viên sử dụng cách nào còn tuỳ thuộc vào yêu cầu cụ thể

Lớp JColorChooser có 3 constructor sau:

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

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

- 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ủa lớp JColorChooser:

STT Phương thức & Mô 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",

Trang 17

"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

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, là true để kích hoạt bộ xử lý hoạt động drag tự động

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

Bảng 4.5: Các phương thức của JColorChooser

Cách 1: Sử dụng chế độ Design

Hình 4.17: Minh họa thiết kế JColorChooser trên NetBeans

Đăng ký sự kiện cho JColorChooser trên NetBeans:

- Bước 1: Cài đặt giao tiếp ChangeListener tại class có sử dụng JColorChooser

public class YourClassName extends implements ChangeListener

- Bước 2: Đăng ký sự kiện cho JColorChooser

Trang 18

jColorChooser1.getSelectionModel().addChangeListener(this);

Trong đó jColorChooser1 là tên của JColorChooser

- Bước 3: Viết xử lý cho phương thức stateChanged (Đây là phương thức của giao tiếp ChangeListener)

@Override public void stateChanged(ChangeEvent e) {

//Lấy màu mà người dùng đã chọn từ JColorChooser Color c = jColorChooser1.getColor();

}

Cách 2: Viết code

//Tạo đối tượng JColorChooser

JColorChooser jcc = new JColorChooser();

//Hiển thị hộp thoại

//Color showDialog(Component component,String title, Color initialColor);

//Màu mà người dùng chọn được chứa trong biến c

Color c =jcc.showDialog(this, "Color dialog", Color.yellow);

Chương trình minh họa JColorChooser:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JColorChooserDemo {

private JFrame mainFrame;

private JLabel headerLabel;

private JLabel statusLabel;

private JPanel controlPanel;

public JColorChooserDemo (){

prepareGUI();

}

public static void main(String[] args){

JColorChooserDemo swingControlDemo = new JColorChooserDemo (); swingControlDemo.showColorChooserDemo();

}

private void prepareGUI(){

mainFrame = new JFrame("JColorChooser Demo");

Ngày đăng: 09/02/2022, 00:03

HÌNH ẢNH LIÊN QUAN

Hình 4.1. Minh họa JCheckbox   Khai báo cho lớp: - Chuyên đề Java  Bài 04
Hình 4.1. Minh họa JCheckbox Khai báo cho lớp: (Trang 1)
Hình 4.3. Màn hình thiết kế Jcheckbox trên Netbeans - Chuyên đề Java  Bài 04
Hình 4.3. Màn hình thiết kế Jcheckbox trên Netbeans (Trang 4)
Hình 4.4. Màn hình thiết kế JRadioButton trên Netbeans - Chuyên đề Java  Bài 04
Hình 4.4. Màn hình thiết kế JRadioButton trên Netbeans (Trang 6)
Hình 4.5. Kết quả minh họa JRadioButton - Chuyên đề Java  Bài 04
Hình 4.5. Kết quả minh họa JRadioButton (Trang 7)
Hình 4.6: Minh họa gắn Button Group - Chuyên đề Java  Bài 04
Hình 4.6 Minh họa gắn Button Group (Trang 7)
Bảng 4.3: Các phương thức của JComboBox  Chương trình minh họa lớp JcomboBox: - Chuyên đề Java  Bài 04
Bảng 4.3 Các phương thức của JComboBox Chương trình minh họa lớp JcomboBox: (Trang 8)
Hình 4.8: Minh họa thiết kế JCombobox trên NetBeans - Chuyên đề Java  Bài 04
Hình 4.8 Minh họa thiết kế JCombobox trên NetBeans (Trang 10)
Hình 4.9: Kết quả thiết kế JButton - Chuyên đề Java  Bài 04
Hình 4.9 Kết quả thiết kế JButton (Trang 10)
Bảng 4.4: Các phương thức của JList  Chương trình ví dụ lớp jlist - Chuyên đề Java  Bài 04
Bảng 4.4 Các phương thức của JList Chương trình ví dụ lớp jlist (Trang 11)
Hình 4.12: Minh họa thiết kế JList trên NetBeans - Chuyên đề Java  Bài 04
Hình 4.12 Minh họa thiết kế JList trên NetBeans (Trang 13)
Hình 4.13: Minh họa đăng ký sự kiện cho JList trên NetBeans  Lấy dữ liệu của dòng được chọn trong JList - Chuyên đề Java  Bài 04
Hình 4.13 Minh họa đăng ký sự kiện cho JList trên NetBeans Lấy dữ liệu của dòng được chọn trong JList (Trang 14)
Hình 4.15: Minh họa thiết kế JTable trên NetBeans - Chuyên đề Java  Bài 04
Hình 4.15 Minh họa thiết kế JTable trên NetBeans (Trang 15)
Hình 4.14: Kết quả minh họa đăng ký JTable - Chuyên đề Java  Bài 04
Hình 4.14 Kết quả minh họa đăng ký JTable (Trang 15)
Hình 4.16: Minh họa đăng ký sự kiện JTable trên NetBeans - Chuyên đề Java  Bài 04
Hình 4.16 Minh họa đăng ký sự kiện JTable trên NetBeans (Trang 16)
Hình 4.17: Minh họa thiết kế JColorChooser  trên NetBeans - Chuyên đề Java  Bài 04
Hình 4.17 Minh họa thiết kế JColorChooser trên NetBeans (Trang 17)

TỪ KHÓA LIÊN QUAN

w