Java: Cách sử dụng nhãn (Label)

Với lớp JLabel ta có thể hiển thị văn bản và ảnh không được phép chọn (bôi đen). Nếu bạn cần tạo một thành phần để hiển thị một chuỗi, ảnh hay cả hai thì ta có thể sử dụng hoặc thừa kế JLabel. Còn nếu thành phần cho phép tương tác được và có trạng thái thì ta nên dùng nút lệnh thay thế.

Bằng cách sử dụng mã HTML trong text của nhãn ta có thể cung cấp những đặc tính khác biệt cho nhãn như đa dòng, đa font chữ và đa màu sắc. Nếu nhãn chỉ sử dụng một màu hay font chữ đơn thôi thì ta có thể sử dụng phương thức setForeground hay setFont. Xin xem chi tiết tại bài viết Cách sử dụng HTML trong Swing component.

Lưu ý rằng mặc định thì nhãn không có đặc tính mờ, nếu bạn vẽ nền cho nhãn thì bạn nên bật thuộc tính opacity của nó thành “true”. Câu lệnh sau đây thể hiện cách làm.

label.setOpaque(true);

Hình dưới đây thể hiện một ứng dung hiển thị ba loại nhãn. Cửa sổ được chia làm ba hàng có cùng độ cao, nhãn trong mỗi hàng có độ rộng tùy ý.

A snapshot of LabelDemo, which uses labels with text and icons.

Dưới đây là đoạn mã trích từ ví dụ LabelDemo dùng để tạo các nhãn như ở hình trên:

ImageIcon icon = createImageIcon(“public/images/article/middle.gif”);
. . .
label1 = new JLabel(“Image and Text”,
                    icon,
                    JLabel.CENTER);
//Thiết lập vị trí cho văn bản và liên kết với icon:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);

label2 = new JLabel(“Text-Only Label”);
label3 = new JLabel(icon);

Đoạn mã cho phương thức createImageIcon tương tự như được thể hiện trong bài viết Cách sử dụng Icon.

Thông thường thì mỗi nhãn mô tả cho một thành phần. Ta có thể sử dụng phương thức setLabelFor để nhận diện thành phần mà nhãn sẽ áp dụng. Ví dụ:

amountLabel.setLabelFor(amountField);

Phương thức setLabelFor cũng được sử dụng trong ví dụ FormattedTextFieldDemo.

API Label

Các bảng dưới đây liệt kê các hàm tạo và phương thức chính của JLabel. Những phương thức khác được định nghĩa trong các lớp Component và JComponent, chúng bao gồm setFont, setForeground, setBorder, setOpaque, và setBackground. Xin mời xem chi tiết tại bài viết Lớp JComponent.

Lưu ý: Trong các API dưới đây, bạn không nhầm lẫn giữa căn chỉnh cho nhãn với căn chỉnh X và Y

. Căn chỉnh X và Y được dùng bởi layout manager và có thể ảnh hưởng đến cách một thành phần nào đó — không phải nhãn — được điều chỉnh kích thước và vị trí. Còn việc căn chỉnh nhãn không ảnh hưởng đến kích thước và vị trí của nhãn. Việc căn chỉnh nhãn đơn giản là xác định vị trí của nhãn bên trong vùng dành cho nhãn cũng như nội dung của nó. Thông thường thì vùng dành cho nhãn chính xác là kích thước cần thiết để vẽ trên nhãn và vì vậy việc căn chỉnh nhãn là không thích hợp.

 

Thiết lập và lấy nội dung của nhãnPhương thức/Hàm tạoMục đíchJLabel(Icon)
JLabel(Icon, int)
JLabel(String)
JLabel(String, Icon, int)
JLabel(String, int)
JLabel()Tạo một thể hiện của JLabel, khởi tạo nó để có được text/image/alignment. Đối số int dùng để chỉ định việc canh ngang cho nội dung nhãn trong vùng vẽ nó, đối số này là một trong các giá trị sau được định nghĩa trong giao diện SwingConstantsLEFTCENTERRIGHTLEADING, hoặc TRAILING. Ta nên dùng LEADING và TRAILING thay cho LEFT và RIGHT.void setText(String)
String getText()Thiết lập và lấy văn bản được hiển thị bởi nhãn. Ta có thể sử dụng các thẻ HTML để định dạng cho văn bản.void setIcon(Icon)
Icon getIcon()Thiết lập hoặc lấy ảnh hiển thị bởi nhãn.void setDisplayedMnemonic(char)
char getDisplayedMnemonic()Thiết lập hoặc lấy ký tự gợi ý (phím tắt) của nhãn.void setDisplayedMnemonicIndex(int)
int getDisplayedMnemonicIndex()Thiết lập hoặc lấy ký tự gợi ý của nhãn. Ví dụ, setDisplayedMnemonicIndex(5) sẽ thiết lập ký tự gợi ý là ký tự có chỉ số 5.void setDisabledIcon(Icon)
Icon getDisabledIcon()Thiết lập hoặc lấy ảnh (icon) của nhãn khi nó bị vô hiệu. Nếu không chỉ định ảnh vô hiệu thì look and feel sẽ làm điều này cho bạn.

 

Tinh chỉnh cho sự xuất hiện của nhãn

Phương thứcMục đíchvoid setHorizontalAlignment(int)
void setVerticalAlignment(int)
int getHorizontalAlignment()
int getVerticalAlignment()Thiết lập hoặc lấy vùng trên nhãn nơi nó được đặt. Giao diện SwingConstants định nghĩa năm giá trị canh ngang: LEFTCENTER (mặc định cho ảnh của nhãn), RIGHTLEADING (mặc định cho chữ của nhãn), TRAILING. Còn theo phương dọc ta có: TOPCENTER (mặc định), và BOTTOM.void setHorizontalTextPosition(int)
void setVerticalTextPosition(int)
int getHorizontalTextPosition()
int getVerticalTextPosition()Thiết lập hoặc lấy vị trí hiển thị của văn bản và icon của nhãn. Các vị trí canh ngang là: LEADINGLEFTCENTERRIGHT, và TRAILING (mặc định). Các vị trí canh dọc là: TOPCENTER (mặc định), và BOTTOM.void setIconTextGap(int)
int getIconTextGap()Thiết lập hoặc lấy khoảng cách giữa văn bản và icon của nhãn.

 

Hỗ trợ khả năng tiếp cận

Phương thứcMục đíchvoid setLabelFor(Component)
Component getLabelFor()Thiết lập hoặc lấy thành phần được nhãn mô tả.

Ví dụ có sử dụng Label