Sử dụng Swing để tạo các ứng dụng như sau: Frames: Cửa sổ bao gồm thanh tiêu đề titlebar , thanh thực đơn menubar, và các nút phóng to maximize , thu nhỏ Drop down –list: Danh sác
Trang 1NGÔN NGỮ LẬP TRÌNH JAVA
Giảng viên : Nguyễn Thu Hà
CHƯƠNG 8: LẬP TRÌNH GIAO DIỆN
Trang 2Trong lớp thư viện của Java có gói Swing
Swing là bộ công cụ giao diện người dùng, nằm trong gói javax.swing, bao gồm các
thành phần cơ bản (component ) để xây
dựng giao diện đồ hoạ như : windows,
buttons, combo box, trees, table, và menu và
xử lý các điều khiển cho thiết bị nhập như : chuột, bàn phím và các thiết bị nhập khác.
Trang 3Sử dụng Swing để tạo các ứng dụng như sau:
Frames: Cửa sổ bao gồm thanh tiêu
đề( titlebar ), thanh thực đơn ( menubar), và các nút phóng to ( maximize ), thu nhỏ
Drop down –list: Danh sách
Checkbox and radio buttons: Hộp chọn
….
Trang 4phương thức để thêm hoặc gỡ bỏ các thành phần trên container.
Trang 52 Tạo một giao diện
Bước đầu tiên để tạo một ứng dụng Swing là tạo một khung chứa để biểu diễn các đối
tượng đồ hoạ lên nó:windows,
JFrame,Applet, ScrollPane, Dialog, Panel
Cửa sổ được hiển thị trên desktop của người dùng Một cửa sổ đơn giản không nhất thiết phải có thanh tiêu đề ( thanh tiêu đề bao gồm nút phóng to, thu nhỏ và đóng Trong Swing, cửa sổ bao gồm những đặc trưng trên được gọi là frames.)
Trang 62.1 Tạo cửa sổ
1 Frame:
Frame là một cửa sổ có thanh tiêu đề
Tạo giao diện Frame bằng cách:
Public class Simpletest extends JFrame{ // body
}
Trang 7Lớp JFrame có 2 phương thức khởi dụng là
JFrame() và JFrame(String ):Hiển thị tiêu đề Các phương thức khác:
setVisible(boolean ): Để chế độ ẩn hay hiện
setBounds(int,int,int,int): Toạ độ góc trên, góc dwis của cửa sổ
setSize(int, int ) để truyền vào 2 tham số là
chiều dài và chiều cao của Frame.
Trang 8Đặt thuộc tính cho Frame khi đóng dùng mẫu sau:
Trang 9Bài tập : Tạo nhiều frame nằm trong 1 frame chính(Desktop)
Bài tập ví dụ: Tạo cửa sổ Simplewindow
Trang 102 Thêm các thành phần vào khung chứa
Panel là một khung chứa, dùng để chứa và nhóm các đối tượng con khác lại với nhau Panel được tạo bởi lớp Jpanel.
Cách thêm thành phần vào panel: ( dùng câu lệnh add)
Jpanel panel=new Jpanel();
panel.add(text1); // thêm ô văn ban vào
panel
panel.add(button1); // thêm nút vào panel
Trang 113 Tạo các thành phần giao diện
3.1 Button
Button được tạo bởi lớp JButton Để tạo một nút có thể dùng một trong các phương thức sau đây:
JButton(String)—Nhãn là chuỗi ký tự
JButton(Icon)— Hiện lên một biểu tượng
JButton(String, Icon)— Cả chuỗi ký tự và biểu tượng
Ví dụ:
JButton exit = new JButton(“Exit”);
Cách thêm buttons vào container (dùng từ khoá add)
JPanel panel = new JPanel();
panel.add(exit);
Bài tập ví dụ:ButtonSimple
Trang 133.3 Textfield
Text field là ô để người dùng có thể sử dụng nhập các
ký tự từ bàn phím Text field được tạobởi lớp
JtextField và chỉ có 1 hàng duy nhất để nhập
Cấu trúc khởi tạo textfield
JTextField()— Một ô văn bản rỗng
JTextField(int)—Một ô văn ban với độ rộng int
JTextField(String, int)—Một ô văn ban với chuỗi
ký tự và độ rộng int
Ví dụ:
JTextField tf1 = new JTextField(30);
JTextField tf2 = new JTextField(“Enter RSS feed URL here”, 30);
Bài tập ví dụ:Textfieldframe
Trang 143.4 Textarea
Textarea tương tự như textfield, nó là ô nhập văn ban nhưng có số hàng nhiều hơn 1 hàng Nó được tạo dựng bởi lớp JTextArea
Khai báo theo cấu trúc:
JTextArea(int, int)—Tạo một vùng văn ban với số
hàng và số cột
JTextArea(String, int, int)—Tạo một vùng văn ban
với chuỗi ký tự số hàng và số cột
Ví dụ
JTextArea ta1=new JTextArea(5,5);
JTextArea ta2=new JTextArea(“enter text here”,5,5);
Trang 153.4 Checkbox and Radiobutton
Checkbox và Radio button đều là dạng lựa chọn
Checkbox thuộc lớp JCheckbox còn Radio button
thuộc lớp JRadioButton
Các hàm thông dụng:
setSelected(boolean): Đặt lựa chọn cho checkbox hoặc radiobutton Nếu chọn thì đặt giá trị là true
isSelected(): Trả về giá trị xem checkbox hoặc
radiobutton có được chọn hay không
Cấu trúc khai báo Jcheckbox như sau:
JCheckBox(String)—Tạo một hòm checkbox với nhãn là chuỗi ký tự
JCheckBox(String, boolean)— Tạo một checkbox với nhãn là ký tự và khi lựa chọn nó có giá trị là true
Trang 16 JCheckBox(Icon)— Tạo một checkbox với biểu tượng
JCheckBox(Icon, boolean)—Tạo một checkbox với biểu tượng và khi lựa chọn nó có giá trị là true
JCheckBox(String, Icon)—Tạo một checkbox có nhãn là ký tự và biểu tượng
JCheckBox(String, Icon, boolean)—Tạo một
checkbox có nhãn là chuỗi ký tự, biểu tượng và mặc định giá trị khi lựa chọn nó là true
Cấu trúc khai báo đối với JRadiobutton cũng như vậy.Bình thường đối tượng thường là một nhóm nút Vậy, cách tạo đối tượng là một nhóm các nút như sau:
Trang 17Ví dụ:
ButtonGroup saveFormat = new ButtonGroup();
JRadioButton jr1 = new JRadioButton(“C++”, false);
saveFormat.add(jr1);
JRadioButton jr2= new JRadioButton(“Java”, true);
saveFormat.add(jr2);
Bài tập ví dụ
Trang 183.5 Combobox:
Lớp JComboBox có thể tạo được các hộp combo, nó biểu diễn danh sách kéo xuống và chỉ được chọn 1 trong số các mục đó
Tạo dựng một hộp combo:
JComboBox(): Không có tham số
Các phương thức cơ ban của lớp JComboBox:
getItemAt(int)— Trả về tên mục trong combo tương ứng với chỉ số của mục đó trong danh sách , mục
đầu tiên được tính từ 0
getItemCount()—Trả lại số mục trong danh sách
getSelectedIndex()—Trả về chỉ số của mục được
chọn hiện tại
getSelectedItem()—Trả về tên của mục hiện tại đang được chọn
Trang 193.6 Listbox:
Danh sách cũng là một phành phần của Swing, nó
tương tự như combobox nhưng trong danh sách, có thể chọn hơn một giá trị (item) Nó được biểu diễn bởi lớp Jlist
Danh sách có thể được tạo là một mảng danh sách Dưới đây là cấu trúc khởi tạo danh sách:
JList()—Tạo một danh sách rỗng
JList(Object[])— Tạo một danh sách chứa các item
Bài tập ví dụ:
Trang 20Cấu trúc khởi tạo một Toolbar:
JToolBar()—Tạo một toolbar mới
JToolBar(int)—Tạo toolbar mới với chiều đặc
biệt
Ví dụ:
JToolBar toolbar = new JToolBar();
Trang 21Cách khởi tạo như sau:
JMenuItem—Khởi tạo một mục menu
JMenu—Một menu thả xuống gồm một hoặc nhiều mục menu con thành phần
JMenuBar— Một thanhr bao gồm một hoặc nhiều thành phần Menu
Trang 22Ví dụ tạo một menu gồm 7 mục:
JMenuItem j1 = new JMenuItem(“Open”);
JMenuItem j2 = new JMenuItem(“Save”);Sau đó thêm các mục vào menu
JMenu m1 = new JMenu(“File”);
m1.add(j1);
m1.add(j2);
m1.addSeparator();
Cuối cùng là tạo menu trên thanh menu bar
JMenuBar bar = new JMenuBar();
bar.add(m1);
gui.setJMenuBar(bar);
Trang 234 Hộp thoại
Lớp JOptionPane cung cấp một vài phương thức để tạo những hộp dialog đơn giản tựa như một cửa sổ nhỏ có câu hỏi và lựa chọn Yes hoặc No.
Có 4 kiểu hộp Dialog như sau:
ConfirmDialog
InputDialog
MessageDialog
OptionDialog
Trang 244.1 Confirm Dialog:
Là hộp chọn đơn giản nhất, có 3 nút chọn chủ yếu là Yes/No/Cancel và được gọi bởi phương thức showConfirmDialog(Thành
phần, Đối tượng ).
Để lựa chọn số nút trong hộp thoại sử dụng
bổ từ:
YES_NO_CANCEL_OPTION hoặc
YES_NO_OPTION
Trang 25Để lựa chọn biểu tượng hiển thị trên hộp thoại dùng các tuỳ chọn sau:
Trang 264.2 InputBox
Tương tự như Confirm Dialog, chỉ việc gọi
phương thức showInputDialog(Thành phần, Đối tượng ).
Ví dụ:
String response=
JOptionPane.showInputDialog(null,”Enter your choice”);
Bài tập ví dụ:
Trang 285 Quản lý trình bày:
Bộ phận quản lý trình bày các đối tượng trong khung chứa gọi là Layout
Thư viện AWT cung cấp các cách sắp xếp sau:
- FlowLayout: Sắp xếp các đối tường từ trái qua phải và từ trên xuống dưới Các đối tượng đều giữ nguyên kích
Trang 295.1 FlowLayout:
Lớp FlowLayout nằm trong gói java.awt là một trình sắp chỗ đơn giản nhất trong việc quản lý trình bày giao diện ( layout
manager ) Để căn các đối tượng theo một trình tự nào đó dùng các phương thức như FlowLayout.LEFT, FlowLayou.RIGHT theo mẫu cấu trúc sau:
FlowLayout right=new FlowLayout.RIGHT;
Trang 305.2 GridLayout
Quản lý trình bày theo Grid Layout là việc sắp xếp
thành phần theo hàng hoặc cột Grid Layout được
khởi tạo bới lớp GridLayout và nó cũng thuộc gói
java.awt Trong lúc khởi tạo, truyền các đối số cho nó Ví dụ:
GridLayout gr= new GridLayout(2,3); // 2 hàng và 3 cột
GridLayout gl=new GridLayout(10,3,5,8);// 10 hàng, 3 cột , khoảng cách hàng trên hàng dưới là 5 pixel,
khoảng cách giữa các cột là 8 pixel
Trang 315.3 BorderLayout
BorderLayout được tạo bởi lớp BorderLayout nằm trong gói java.awt Nó chia cửa sổ giao diện thành các phần như đông, tây, nam, bắc
và trung tâm.
Để thêm thành phần vào BorderLayout dùng cấu trúc: