4.1.2. Mô tả container trong Swing
Container là thành phần chủ chốt của SWING GUI. Một Container cung cấp một không gian, là nơi đặt một thành phần. Một Container chính là một Component có thêm khả năng để thêm các thành phần khác vào.
Khi xem xét về Container, cần chú ý các điểm sau:
Các lớp con của Container được gọi là Container. Một số ví dụ về các lớp con của Container là JPanel, JFrame và JWindow.
Container chỉ có thể thêm Component vào chính nó
Một layout mặc định có mặt trong mỗi container. Layout này có thể bị ghi đè bởi sử dụng phương thức setLayout().
Bảng bên dưới sẽ trình bày các loại container.
Tên | Miêu tả | |
Top level | JApplet, JDialog, JFrame | Những thành phần này xuất hiện trong bất kỳ ứng dụng Swing và được sử dụng để chứa các thành phần khác |
General Purpose | JPanel,JScollPane, JTabbedPane, JToolBar | Container phổ biến |
Special Purpose | JInternalFrame, JLayeredPane, JRootPane | Container đặc biệt |
Có thể bạn quan tâm!
- Cấu Trúc Phân Cấp Theo Quan Hệ Kế Thừa Của Các Giao Diện Lõi
- Sử Dụng Phương Thức Isalive() Và Join()
- Xây Dựng Lớp Quanlysach Cài Đặt Các Phương Thức Thực Hiện Các Công Việc Sau:
- Công nghệ Java - 16
- Lấy Dữ Liệu Của Người Dùng Từ Hộp Thoại
- Những Luồng Được Định Nghĩa Trước (The Predefined Streams)
Xem toàn bộ 232 trang tài liệu này.
4.2. Quản lý Layout
Layout là sự bố trí sắp xếp các thành phần bên trong Container theo cách thức nhất định. Để xử lý một số lượng thành phần lớn với kích cỡ, hình dạng khác nhau và bố trí theo cách mong muốn thì việc sử dụng các LayoutManager là cần thiết.
4.2.1. BorderLayout
Lớp BorderLayout sắp xếp các thành phần phù hợp với 5 miền: đông, tây, nam, bắc và trung tâm. Nó là layout mặc định của Frame hoặc Window. Mỗi khu vực (miền) chỉ có thể chứa một thành phần và mỗi thành phần trong mỗi khu vực được nhận diện bởi các hằng tương ứng:
public static final int NORTH public static final int SOUTH public static final int EAST public static final int WEST
public static final int CENTER
Cú pháp để khai báo lớp Java.awt.BorderLayout là:
public class BorderLayout
extends Object
implements LayoutManager2, Serializable
Các hàm tạo của lớp BorderLayout:
BorderLayout(): Xây dựng một Border Layout mới, ở đó giữa các thành phần là không có khoảng cách.
BorderLayout(int hgap, int vgap): Xây dụng một Border Layout với các khoảng cách gap theo chiều dọc và ngang đã xác định giữa các thành phần.
Các phương thức của lớp BorderLayout:
Phương thức và miêu tả | |
1 | void addLayoutComponent (Component comp, Object constraints) Thêm thành phần comp vào layout, sử dụng đối tượng Constraint cho trước |
2 | void addLayoutComponent (String name, Component comp) Thêm thành phần comp vào layout, liên kết nó với chuỗi xác định bởi tên. |
3 | int getHgap() Trả về khoảng cách theo chiều ngang giữa các thành phần |
4 | float getLayoutAlignmentX(Container parent) Trả về căn chỉnh theo trục x |
5 | float getLayoutAlignmentY(Container parent) Trả về căn chỉnh theo trục y |
6 | int getVgap() Trả về khoảng cách theo chiều dọc giữa các thành phần |
7 | void invalidateLayout(Container target) Vô hiệu hóa layout, chỉ rằng nếu Layout Manager đã lưu thông tin thì nên loại bỏ |
8 | void layoutContainer(Container target) Bố trí tham số container sử dụng Border Layout này |
9 | Dimension maximumLayoutSize(Container target) Trả về kích cỡ các chiều tối đa cho layout, cung cấp các thành phần trong target đã cho. |
10 | Dimension minimumLayoutSize(Container target) Xác định kích cỡ tối thiểu cho target sử dụng layout manager |
11 | void removeLayoutComponent(Component comp) Xóa thành phần comp đã cho từ Border Layout |
String toString() Trả về một biểu diễn chuỗi Border Layout này |
12
4.2.2. GridLayout
GridLayout sắp xếp các thành phần trong một lưới hình chữ nhật. Một thành phần được hiển thị trong một hình chữ nhật.
Cú pháp khai báo cho lớp java.awt.GridLayout là:
public class GridLayout extends Object
implements LayoutManager, Serializable
Các hàm tạo của lớp GirdLayout Manager:
GridLayout(): Tạo một gridlayout mặc định là một cột
GridLayout(int rows, int columns): Tạo một grid layout với số hàng và cột đã cho, và không có khoảng cách giữa các thành phần.
GridLayout(int rows, int columns, int hgap, int vgap): Tạo một grid layout với các hàng và cột đã cho cùng với khoảng cách theo chiều dọc và ngang xác định trước.
Các phương thức của lớp GirdLayout Manager
Phương thức và mô tả | |
1 | void layoutContainer(Container parent) Bố trí container đã cho bởi sử dụng layout này. |
2 | Dimension minimumLayoutSize(Container parent) Xác định kích cỡ tối thiểu của tham số container |
3 | Dimension preferredLayoutSize(Container parent) Xác định kích cỡ được ưu tiên của tham số container . |
4 | void removeLayoutComponent(Component comp) Xóa thành phần đã cho từ layout. |
5 | void setColumns(int cols) Thiết lập số cột trong layout |
6 | void setHgap(int hgap) Thiết lập khoảng cách theo chiều ngang giữa các thành phần |
7 | void setRows(int rows) Thiết lập số hàng trong layout |
8 | void setVgap(int vgap) Thiết lập khoảng cách theo chiều dọc giữa các thành phần |
4.2.3. GirdBagLayout
GridBagLayout là một lớp quản lý layout linh động. Đối tượng của GridBagLayout căn chỉnh các thành phần theo chiều dọc, ngang hoặc theo baseline mà không yêu cầu các thành phần phải cùng kích cỡ.
Cú pháp khai báo cho lớp java.awt.GridBagLayout là:
public class GridBagLayout extends Object
implements LayoutManager2, Serializable
4.2.4. GroupLayout
GroupLayout nhóm các thành phần theo cấu trúc thứ bậc để đặt chúng trong một Container. Cú pháp khai báo cho lớp javax.swing.GroupLayout là:
public class GroupLayout extends Object
implements LayoutManager2
Hàm tạo GroupLayout(Container host) tạo một GroupLayout cho container đã cho.
4.3. Text Input
4.3.1. TextFields
JTextField là một đối tượng cho phép người dùng nhập một dòng văn bản. Thường dùng để nhập dữ liệu với các thông tin ngắn.
Các hàm khởi tạo JTextField
JTextField(): Tạo mới 1 JTextField
JTextField(Document doc, String text, int columns): Tạo 1 JTextField sử dụng mô hình lưu trữ văn bản với đoạn text và số cột (coloumns)
JTextField(int columns): Tạo JTextField trống với độ rộng là columns
JTextField(String text): Tạo JTextField với text cho trước
JTextField(String text, int columns): Tạo JTextField với text và độ rộng cho trước.
Một số phương thức thường dùng
getText(): Lấy dữ liệu (chuỗi) từ JTextField
setText(): Đặt dữ liệu cho JTextField
requestFocus(): Đặt con trỏ nhập liệu đến JTextField được chọn
setEditable(boolean edit): Cho phép nhập dữ liệu cho JTextfield hay không
4.3.2. Label
Lớp (class) JLabel trong Java Swing được sử dụng để hiển thị một dòng văn bản, người dùng chỉ có thể đọc mà không thể thao tác trực tiếp.
Các hàm khởi tạo
Mô tả | |
Jlabel () | Tạo một nhãn không có hình ảnh và tiêu đề là rỗng. |
Jlabel (String text) | Tạo một nhãn (JLabel) với văn bản (text) được chỉ định. |
Jlabel (Icon icon) | Tạo một nhãn (JLabel) với biểu tượng (icon) được chỉ định. |
Jlabel (String text, int horizontalAlignment) | Tạo một nhãn (JLabel) với văn bản (text) và horizontalAlignment được chỉ định. |
Jlabel (Icon i, int horizontalAlignment) | Tạo ra một nhãn (JLabel) với biểu tượng (icon) và horizontalAlignment được chỉ định. |
Jlabel (String text, Icon i, int horizontalAlignment) | Tạo ra một nhãn (JLabel) với văn bản (text) và biểu tượng (icon) và horizontalAlignment được chỉ định. |
Các phương thức của lớp Jlabel
Tên phương thức | |
1 | void setText(String text) Thiết lập (set) văn bản (text) cụ thể cho JLabel. |
String getText() Lấy văn bản (text) của JLabel. | |
3 | void setHorizontalAlignment(int alignment) Đặt alignment cho label trên trục x. |
4 | int getHorizontalAlignment() Lấy alignment của label trên trục x. |
5 | Icon getIcon() Phương thức getIcon được sử dụng để lấy biểu tượng (icon) của JLabel. |
2
4.3.3. Password Fields
Lớp JPasswordField trong Java Swing được kế thừa lớp (class) JTextField, là một thành phần văn bản chuyên để nhập mật khẩu.
Các hàm tạo của lớp JPasswordField:
Mô tả | |
JPasswordField() | Tạo ra JPasswordField với text là null. |
JPasswordField(int columns) | Tạo ra JPasswordField với text là null và columns được chỉ định. |
JPasswordField(String text) | Tạo ra JPasswordField với text được chỉ định. |
JPasswordField(String text, int columns) | Tạo ra JPasswordField với text và columns được chỉ định. |
Các phương thức của lớp JPasswordField được kế thừa từ lớp JTextField
4.3.4. TextAreas
Lớp JTextArea trong Java Swing kế thừa lớp JTextComponent là một vùng hiển thị văn bản nhiều dòng, cho phép người dùng thao tác và chỉnh sửa.
Hàm tạo của lớp JTextArea
Mô tả | |
JTextArea() | Tạo một JTextArea với văn bản (text) hiển thị rỗng. |
JTextArea(String text) | Tạomột JTextArea với văn bản (text) được chỉ định. |
JTextArea(int row, int column) | Tạo một JTextArea với hàng và cột được chỉ định. |
JTextArea(String text, int row, int column) | Tạo một JTextArea văn bản (text) hiển thị theo hàng và cột được chỉ định. |
Các phương thức của lớp JTextArea
Tên phương thức | |
1 | void setRows (int rows) Thiết lập số lượng hàng được chỉ định trong JTextArea. |
2 | void setColumns (int cols) Thiết lập số lượng cột được chỉ định trong JTextArea. |
3 | void setFont (Font f) Thiết lập font được chỉ định trong JTextArea. |
4 | void insert (String s, int position) Chèn văn bản vào vị trí được chỉ định trong JTextArea. |
5 | void append (String s) Nối văn bản được chỉ định trong JTextArea. |
4.3.5. Scroll Panes
Trong Swing, mặc định TextArea không có thanh cuộn. Nếu muốn có thanh cuộn phải đặt Textarea vào trong một scroll pane.
Cú pháp khai báo:
TextArea textArea = new TextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
ScollPane sẽ quản lý giao diện của TextArea. Thanh cuộn sẽ tự động xuất hiện nếu có nhiều văn bản hơn vùng mà TextArea có thể hiển thị và nó sẽ biến mất nếu văn bản bị xóa đi vừa với vùng hiển thị. Thanh cuộn được tự động xử lý bởi ScrollPane, chương trình không phải xử lý sự kiện xuất hiện thanh cuộn. Để thêm thanh cuộn vào một component chỉ cần thêm vào trong một ScrollPane.
4.4. Các thành phần lựa chọn
4.4.1. Checkboxes
Lớp JCheckBox trong Java Swing kế thừa từ class JToggleButton, được sử dụng để chọn đúng hoặc sai, chọn hay không chọn về một vấn đề nào đó.
Hàm tạo của lớp Jcheckbox
Mô tả | |
JcheckBox () | Tạo một JCheckBox với trạng thái là không được chọn, không có văn bản (text) và biểu tượng hiển thị. |
JchechBox (String s) | Tạo một JCheckBox với trạng thái là không được chọn, với văn bản (text) hiển thị được chỉ định. |
JcheckBox (String text, boolean selected) | Tạo một JCheckBox với trạng thái (selected) và văn bản (text) hiển thị được chỉ định. |
JcheckBox (Action a) | Tạo một JcheckBox các thuộc tính được lấy ra từ Action. |
4.4.2. Radio Button
Lớp (class) JRadioButton trong Java Swing kế thừa từ class JToggleButton được sử dụng để tạo ra một nút radio. JRadioButton được sử dụng trong trường hợp chọn một trong nhiều tùy chọn