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

