Lập trình Java nâng cao - Chương 1: Lập trình giao diện
Sơ đồphân cấp lớp GUI
JFrames
LayoutManagers
Drawingon JPanels: Lines, Rectangles, Ovals, Arcs, Polygons
Event-Driven Programming: EventSource, Listener,
Listener Interface
Nút nhấn vàmenu
JCheckbBox vàJRadioButton
Các lớp văn bản vàJScrollBar
) JRadioButton(String text, boolean selected) JRadioButton(Icon icon) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected) Các thuộc tính JRadioButton JRadioButton có tất cả các thuộc tính trong JButton. Ngoài ra, JRadioButton có thuộc tính: selected Gộp nhóm các Radio Button ButtonGroup btg = new ButtonGroup(); btg.add(jrb1); btg.add(jrb2); Using Radio Buttons: JRadioButton rb1 = new JRadioButton(“Chon”); JRadioButton rb2 = new JRadioButton(“Khong chon”); btg.add(rb1); btg.add(rb2); if (rb1.isSelected()) { . . . } JLabel Label dùng để hiển thị một chuỗi văn bản thông thường nhằm mô tả thêm thông tin cho các đối tượng khác. Các constructor của JLabel: JLabel() JLabel(String text) JLabel(String text,int hAlignment) JLabel(Icon icon) JLabel(Icon icon, int hAlignment) JLabel(String text,Icon icon,int hAlignment) Các thuộc tính JLabel text icon horizontalAlignment verticalAlignment Using Labels JTextField Text field là ô nhập dữ liệu dạng văn bản trên 1 dòng. Các constructor của JTextField: JTextField() JTextField(int columns) Tạo một text field trống có số cột xác định. JTextField(String text) Tạo một text field với văn bản có sẵn. JTextField(String text, int columns) Tạo một text field với văn bản có sẵn và số cột xác định. Các thuộc tính JTextField text horizontalAlignment editable columns Các phương thức JTextField getText() Trả về chuỗi ký tự trong text field. setText(String text) Đặt chuỗi ký tự trong text field. setEditable(boolean editable) Cho phép hoặc vô hiệu hóa soạn thảo trong text field. Mặc định, editable là true. setColumns(int) Thiết lập số cột trong text field. Chiều dài của text field có thể thay đổi. JTextArea TextArea là khung cho phép người sử dụng nhập vào nhiều dòng văn bản. Các constructor của JTextArea: JTextArea() JTextArea(String s) JTextArea(int rows, int columns) JTextArea(String s, int rows, int columns) Các thuộc tính JTextArea text editable columns lineWrap wrapStyleWord rows lineCount tabSize Sử dụng Text Area Chương trình hiển thị 1 ảnh và 1 title trong 1 label, hiển thị văn bản trong text area. DescriptionPanel -jlblImage -jlblTitle -jtaTextDescription +setImageIcon +setTitle +setTextDescription +getMinimumSize 11 TextAreaDemo JPanel JFrame JComboBox Combo box là danh sách đơn giản các mục chọn. Cơ bản nó thực hiện chức năng giống như 1 list, nhưng chỉ có thể lấy 1 giá trị. Các constructor: JComboBox() tạo 1 combo box rỗng JComboBox(Object[] stringItems) tạo 1 combo box chứa các phần tử trong dãy Các phương thức JComboBox jcbo.addItem(Object item) thêm 1 mục chọn vào JComboBox jcbo jcbo.getItem() jcbo.getItemAt(int index) lấy 1 mục chọn từ JComboBox jcbo jcbo.removeItemAt(int index) loại 1 mục chọn khỏi JComboBox jcbo Using Combo Box: Sử dụng itemStateChanged Handler Khi một lựa chọn được check hoặc uncheck, itemStateChanged() cho ItemEvent và actionPerformed() handler cho ActionEvent sẽ được gọi. public void itemStateChanged(ItemEvent e){ // Make sure the source is a combo box if (e.getSource() instanceof JComboBox) String s = (String)e.getItem(); } JList List là một thành phần cơ bản thực hiện chức năng giống combo box, nhưng nó cho phép người sử dụng chọn một hoặc nhiều giá trị. Các constructor: JList() tạo 1 list rỗng. JList(Object[] stringItems) tạo 1 list chứa các phần tử trong dãy. Các thuộc tính JList selectedIndex selectedIndices selectedValue selectedValues selectionMode visibleRowCount Using Lists: JScrollBar ScrollBar là một điều khiển cho phép người sử dụng chọn từ một dải các giá trị. Các constructor: JScrollBar() JScrollBar(int orientation) JScrollBar(int orientation, int value, int extent, int min, int max) Các thuộc tính JScrollBar orientation: 1 - dọc, 0 - ngang maximum, minimum visibleAmount (extent): độ rộng của phần con chạy value: giá trị hiện thời của scroll bar blockIncrement: giá trị được cộng thêm khi kích hoạt vùng tăng. unitIncrement: giá trị được cộng thêm khi kích hoạt đầu tăng. Các phương thức JScrollBar setBlockIncrement(int increment) setMaximum(int maximum) setMinimum setOrientation(int orientation) setUnitIncrement(int increment) setValue(int value) setVisibleAmount (extent): getBlockIncrement() ... Borders Bạn có thể thiết lập một border trên bất kỳ đối tượng nào của lớp JComponent, nhưng thường hữu ích khi thiết lập một titled border trên JPanel để nhóm một tập các thành phần giao diện người sử dụng có liên quan. Using border: Các phương thức tĩnh để tạo Borders createTitledBorder(String title) createLoweredBevelBorder() createRaisedBevelBorder() createLineBorder(Color color) createLineBorder(Color color, int thickness) createEtchedBorder() createEtchedBorder(Color highlight, Color shadow, boolean selected) createEmptyBorder() createMatteBorder(int top, int left, int bottom, int right, Icon tileIcon) createCompoundBorder(Border outsideBorder, Border insideBorder) Dialogs Có thể sử dụng lớp JOptionPane để tạo 4 loại dialog chuẩn: – Message Dialog hiển thị một message và đợi người sử dụng kích nút OK để đóng hộp thoại. – Confirmation Dialog hiển thị câu hỏi và đề nghị người sử dụng trả lời, vd: OK hay Cancel – Input Dialog hiển thị câu hỏi và nhận dữ liệu vào từ 1 text field, combo box hoặc list. – Option Dialog hiển thị câu hỏi và nhận câu trả lời từ một tập các lựa chọn. Tạo các Message Dialog Sử dụng phương thức tĩnh trong lớp JOptionPane showMessageDialog(Component parentComponent, Object message) showMessageDialog(Component parentComponent, Object message,String title, int messageType) showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) Tạo các Confirmation Dialog Sử dụng phương thức tĩnh trong lớp JOptionPane showConfirmDialog(Component parentComponent, Object message) showConfirmDialog(Component parentComponent, Object message, String title, int optionType) showConfirmDialog(Component parentComponent, Object message, String title, int optionType, [[int messageType], Icon icon]) Tạo các Option Dialog Sử dụng phương thức tĩnh trong lớp JOptionPane showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue) Sử dụng các dialog: Menus Java cung cấp một số lớp - JMenuBar, JMenu, JMenuItem, JCheckBoxMenuItem, và JRadioButtonMenuItem - để thực thi menu trong một frame. Một JFrame hoặc JApplet có thể chứa một menu bar trên đó có gắn các pull-down menu. Các menu chứa các menu item để người dùng lựa chọn (hoặc bật/tắt). Menu bar có thể được xem như một cấu trúc để hỗ trợ các menu. Menu Demo Lớp JMenuBar Menu bar chứa các menu; menu bar chỉ có thể được thêm vào 1 frame. Đoạn code sau tạo và thêm một JMenuBar vào 1 frame: JFrame f = new JFrame(); f.setSize(300, 200); f.setVisible(true); JMenuBar mb = new JMenuBar(); f.setJMenuBar(mb); Lớp Menu Bạn gắn các menu vào một JMenuBar. Đoạn code sau tạo 2 menu File và Help, và thêm chúng vào JMenuBar mb: JMenu fileMenu = new JMenu("File", false); JMenu helpMenu = new JMenu("Help", true); mb.add(fileMenu); mb.add(helpMenu); Lớp JMenuItem Đoạn code sau thêm các mục chọn (menu item) và các separator trong menu fileMenu: fileMenu.add(new JMenuItem("New")); fileMenu.add(new JMenuItem("Open")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("Print")); fileMenu.addSeparator(); fileMenu.add(new JMenuItem("Exit")); Submenus Bạn có thể thêm các submenus vào các menu item. Đoạn code sau thêm các submenu “Unix”, “NT”, và “Win95” vào trong mục chọn “Software”. JMenu softwareHelpSubMenu = new JMenu("Software"); JMenu hardwareHelpSubMenu = new JMenu("Hardware"); helpMenu.add(softwareHelpSubMenu); helpMenu.add(hardwareHelpSubMenu); softwareHelpSubMenu.add(new JMenuItem("Unix")); softwareHelpSubMenu.add(new JMenuItem("NT")); softwareHelpSubMenu.add(new JMenuItem("Win95")); Submenu Demo Sử dụng Menu Tạo một giao diện thực hiện các phép toán số học giữa 2 số Number1 và Number2. Giao diện chứa các nhãn và text field cho Number 1, Number 2, và Result (sử dụng như đối với JButton). Bước 1: Tạo 1 subclass của lớp JFrame (được gọi là 1 SubFrame) để xác định cửa sổ mới làm việc gì. Ví dụ, tất cả các chương trình ứng dụng GUI mở rộng JFrame và là các subclass của JFrame. Tạo thêm Window - bước 1 Tạo thêm Window - bước 2 Bước 2: Tạo 1 instance của SubFrame trong ứng dụng hoặc trong applet. Ví dụ: SubFrame subFrame = new SubFrame("SubFrame Title"); Tạo thêm Window - bước 3 Bước 3: Tạo 1 JButton để kích hoạt subFrame. add(new JButton("Activate SubFrame")); Tạo thêm Window - bước 4 Bước 4: chồng phương thức actionPerformed() như sau: public actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (e.target instanceof Button) { if ("Activate SubFrame".equals(actionCommand)) { subFrame.setVisible(true); } } } Ví dụ: Tạo nhiều Window Ví dụ tạo 1 main window có 1 text area trong scroll pane, 1 button "Show Histogram". Khi người sử dụng kích vào button, 1 cửa sổ mới xuất hiện để hiển thị biểu đồ cho biểu diễn tần số xuất hiện của các ký tự trong text area. JScrollPane Scroll pane là một thành phần tự động hỗ trợ cuộn cửa sổ mà không cần lập trình. Using Scroll Pane: add một TextArea vào trong một Scroll pane Cấu trúc Scroll Pane Column headerCorner Component Row header JViewport Scrollable Component Horizontal scroll bars Vertical scroll bars Corner Component Corner Component Corner Component JTabbedPane Tabbed pane cung cấp một tập các tab loại trừ lẫn nhau để truy nhập nhiều thành phần. Using Tabbed Pane:
File đính kèm:
- Lập trình Java nâng cao - Chương 1_Lập trình giao diện.pdf