Bài 8 giới thiệu về Swing trong Java. Nội dung trình bày trong bài giảng gồm có: Java foundation classes (AFC), abstract windowing toolkit (AWT), swing, các thùng chứa -containers, các hộp thoại - dialogs, các hộp thoại - dialogs, các thành phần GUI – components, xử lý sự kiện. Mời các bạn cùng tham khảo.
LẬP TRÌNH JAVA Bài 8: Giới thiệu Swing Điểm danh Nhắc lại trước Khái niệm Applets Sự khác Applets Applications Vòng đời applet Một số phương thức class Graphics Tạo applet Sử dụng tham số Applets Xử lý kiện Một số interface class xử lý kiện Một số ví dụ Nội dung học Java Foundation Classes (AFC) Abstract Windowing Toolkit (AWT) Swing Các thùng chứa -Containers Các hộp thoại - Dialogs Quản lý Layout Các thành phần GUI – Components Xử lý kiện Java Foundation Classes (JFC) FC (Foundation Classes) nhóm thư viện thiết kế để hỗ trợ lập trình viên tạo ứng dụng GUI Java FC đơn giản hóa trình thiết kế làm giảm thời gian thực viết mã Swing năm thư viện tạo nên JFC JFC chứa Abstract Window Toolkit (AWT),Accessibility API, 2D API tăng cường hỗ trợ khả kéo thả (Drag and Drog) Java Foundation Classes AWT Java 2D Swing JFC Drag & Drop Accessibility Abstract Windowing Toolkit (AWT) AWT chứa nhiều class method cho phép thiết kế, quản lý cửa sổ font chữ giao diện đồ họa Mục đích awt hỗ trợ cho ứng dụng applet dùng để thiết kế chương trình có giao diện đồ họa độc lập Tuy nhiên AWT có hạn chế: • Các thành phần GUI có hình dạng/hành động khác hệ điều hành khác (heavyweight) • Look and Feel thành phần (dễ dàng) thay đổi Swing Swing giải hạn chế liên quan đến thành phần AWT thông qua việc sử dụng tính năng: thành phần lightweight pluggable look and feel Các thành phần swing lightweight: Các thành phần viết hoàn toàn Java, khơng phụ thuộc vào hệ điều hành cụ thể hiệu linh hoạt Các class Swing có khả viết cảm quan (Look&Feels) cho thành phần, thay đổi cảm quan vào thời điểm chạy Swing có nhiều thành phần table, tree, slider, spinner, progress bar, internal frame text Các thành phần Swing Object ButtonGroup Component ProgressMonitor InputStream FilterInputStream Container JComponent JComboBox AbstractButton JButton JCheckBox JList JLabel JToggleButton ProgressMonitorInputStream JMenuItem JRadioButton JSlider JScrollBar JEditPane JTextComponent JTextArea JPassword JTextField Containers Một container thành phần đặc biệt chứa thành phần khác • Top-level container container cấp cao nhất, hệ thống phân cấp • Swing cung cấp container top-level container là: JFrame, JDialog, JWindow JApplet • Để hiển thị hình, thành phần GUI phải phần hệ thống phân cấp Mỗi hệ thống phân cấp có top-level gốc Trong JFrame hay sử dụng Component: JRadio JRadioButton yesButton = new JRadioButton("Yes" , true); JRadioButton noButton = new JRadioButton("No" , false); JRadioButton maybeButton = new JRadioButton("Maybe", false); ButtonGroup bgroup = new ButtonGroup(); bgroup.add(yesButton); bgroup.add(noButton); bgroup.add(maybeButton); JPanel radioPanel = new JPanel(); radioPanel.setLayout(new GridLayout(3, 1)); radioPanel.add(yesButton); radioPanel.add(noButton); radioPanel.add(maybeButton); radioPanel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Married?")); Component: JRadio boolean b; JRadioButton rb = new JRadioButton("Sample", false); Một số phương thức hay dùng: rb.isSelected(); Trả true nút radio chọn rb.setSelected(b); Đặt nút radio b (true/false) rb.addActionListener(listener); Thêm vào hành động listener cho nút radio Nếu radio chọn listener hoạt động Thêm vào hành động listener cho nút radio rb.addItemListener(itemlistener); Nếu radio chọn bỏ chọn listener hoạt động Component: JList Cú pháp: JList() JList(ListModel dataModel) Jlist(Object[] listData) Component: JList Ví dụ: JList boxes; String names[] = {"Red", "Blue", "Green", "Orange", "Yellow", Pink", "Cyan", "Gray", "Black", "Magenta"}; boxes = new JList(names); boxes.setVisibleRowCount(10); Component: JList JList list; DefaultListModel model; int count = 5; model = new DefaultListModel(); list = new JList(model); JButton addButton = new JButton("Add Element"); for (int i = 0; i < 10; i++) model.addElement("Element " + i); addButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ model.addElement("Element " + counter); counter++; } }); Component: JComboBox Khởi tạo: String[] dias = {"lunes", "martes", "miercoles"}; JComboBox dayChoice = new JComboBox(dias) Giả sử có: int index; String item; String obj; // obj kiểu khác Các phương thức: String JComboBox cb = new JComboBox( ); cb.addActionListener(listener); Component: JComboBox Phương thức Ý nghĩa cb.setSelectedIndex(index) Đặt mục có sổ index chọn cb.setSelectedItem(obj) Đặt mục obj chọn cb.add(item) Thêm vào item cb.insert(item,index) Thêm vào item sau vị trí index cb.remove(item) Xóa mục item khỏi combo box cb.remove(index) Xóa mục có số index khỏi combo box index = cb.getSelectedIndex(); Trả sổ mục chọn obj = cb.getSelectedItem(); Trả giá trị mục chọn Xử lý kiện Một kiện thường xảy có thay đổi giao diện người dùng đồ họa Ví dụ người dùng click chuột vào button, click vào mục combo box… kiện kích hoạt Các thành phần đồ họa (components) tạo kiện gọi ‘nguồn kiện’ (event source) Các nguồn kiện gửi đối tượng kiện (event object) Các kiện xử lý kiện lắng nghe (event listener) gán cho nguồn kiện Các thành phần khác GUI có event listener khác Xử lý kiện GUI Sự kiện tác động Programspecific Action handlers Đăng ký Listener Listeners Xử lý kiện • Xây dựng GUI kết nối (còn gọi đăng ký) tới listeners • Listener thực thi (implements) interface thích hợp với loại kiện • Thực lệnh (trong xử lý kiện) phù hợp với nguồn kiện Xử lý kiện Event Object ActionEvent Interface method interface ActionListener Các method liên kết addActionListener actionPerformed(ActionEvent) removeActionListener Event Source JButton JCheckBox JComboBox JTextField JRadioButton ItemEvent interface ItemListener addItemListener itemStateChanged(ItemEvent) removeItemListener JCheckBox JRadioButton JComboBox MouseEvent interface MouseListener addMouseListener mousePressed(MouseEvent) removeMouseListener Mouse thành mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) Được tạo kiện phần GUI Xử lý kiện Sử dụng Inner Class Listener có tên: Là cách thường dùng để viết chương trình nhỏ Nhiều component dùng chung Inner Class Anonymous Inner Class Listeners: Là inner class không đặt tên, thường dùng cho component Class dạng không linh hoạt Top-level Listeners (this): Thường sử dụng có event source Xử lý kiện import javax.swing.*; import java.awt.event.*; class SomePanel extends JPanel { private JButton myGreetingButton = new JButton("Hello"); private JTextField myGreetingField = new JTextField(20); public SomePanel() { ActionListener doGreeting = new GreetingListener(); myGreetingButton.addActionListener(doGreeting); myGreetingField.addActionListener(doGreeting); // Các lệnh khác } // Inner class tên GreetingListener private class GreetingListener implements ActionListener { public void actionPerformed(ActionEvent e) { myGreetingField.setText("Guten Tag"); } } } Xử lý kiện class myPanel extends JPanel { public MyPanel() { JButton b1 = new JButton("Hello"); b1.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ // Các lệnh xử lý kiện cho b1 } } ); } Xử lý kiện class Hello extends JApplet implements ActionListener{ JButton b; public void init() { JButton b = new JButton("Hello"); b.addActionListener(this); } public void actionPerformed(ActionEvent e) { message = "Hi"; repaint(); } } Tổng kết học Java Foundation Class (AFC) Abstract Windowing Toolkit (AWT) Swing Các thùng chứa -Containers Các hộp thoại - Dialogs Quản lý Layout Các thành phần GUI – Components Xử lý kiện ... viết mã Swing năm thư viện tạo nên JFC JFC chứa Abstract Window Toolkit (AWT),Accessibility API, 2D API tăng cường hỗ trợ khả kéo thả (Drag and Drog) Java Foundation Classes AWT Java 2D Swing. .. có constructor: JPanel() JPanel(LayoutManager mg) JPanel import javax .swing. *; import javax .swing. event.*; import javax .swing. border.*; public class Main { public static void main(String args... Components Xử lý kiện Java Foundation Classes (JFC) FC (Foundation Classes) nhóm thư viện thiết kế để hỗ trợ lập trình viên tạo ứng dụng GUI Java FC đơn giản hóa q trình thiết kế làm giảm