Java: Cách sử dụng HTML trong Swing Component

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Có nhiều thành phần Swing hiển thị một chuỗi văn bản như là một phần của GUI. Mặc định thì văn bản của một thành phần được hiển thị gồm hai thành phần font chữ và màu sắc. Ta có thể xác định font chữ và màu sắc của văn bản bằng cách gọi phương thức setFont và setForeground tương ứng. Đoạn mã sau tạo một nhãn sau đó thiết lập font chữ và màu sắc cho nó:

label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0xffffdd));

Nếu bạn muốn trộn các font chữ và màu sắc hay định dạng trên nhiều dòng thì bạn có thể sử dụng HTML. Định dạng HTML có thể được sử dụng trong các nút lệnh, menu, nhãn, tool tips và tabbed pane.

Để xác định văn bản của thành phần có định dạng được theo HTML hay không thì ta đặt thẻ <html> ở phía đầu của văn bản sau đó sử dụng bất kỳ một giá trị HTML nào trong phần còn lại. Dưới đây là một ví dụ sử dụng HTML cho văn bản của nút lệnh:

button = new JButton("<html><b><u>T</u>wo</b><br>lines</html>");

Conf đây là kết quả: Screenshot of a button that shows HTML in the Metal look and feel.

Ví dụ 1: Demo về việc sử dụng HTML

Dưới đây là một ứng dụng có tên HtmlDemo, nó thực hiện công việc định dạng bằng HTML bằng cách thiết lập văn bản cho nhãn, ta có thể xem chi tiết ví dụ này tại HtmlDemo. Ảnh dưới đây thể hiện kết quả của ví dụ này.

Screenshot of HtmlDemo in the Metal look and feel.

Ví dụ 2: ButtonHtmlDemo

Dưới đây là một ví dụ khác về cách sử dụng HTML. ButtonHtmlDemo sẽ thêm font, màu và định dạng văn bản khác cho ba nút lệnh. Ta có thể xem toàn bộ ví dụ này tại ButtonHtmlDemo. Một ảnh thể hiện kết quả của ví dụ được thể hiện như dưới đây:

Screenshot of ButtonHtmlDemo in the Metal look and feel.

Nút trái và phải có nhiều dòng cũng như kiểu văn bản, nút ở giữa có một dòng văn bản, một màu, một font và nó không liên quan đến HTML. Dưới đây là đoạn mã chỉ định định dạng văn bản cho ba nút lệnh này:

b1 = new JButton("<html><center><b><u>D</u>isable</b><br>" + "<font color=#ffffdd>middle button</font>", leftButtonIcon);
Font font = b1.getFont().deriveFont(Font.PLAIN);
b1.setFont(font);
...
b2 = new JButton("middle button", middleButtonIcon);
b2.setFont(font);
b2.setForeground(new Color(0xffffdd));
...
b3 = new JButton("<html><center><b><u>E</u>nable</b><br>" + "<font color=#ffffdd>middle button</font>", rightButtonIcon);
b3.setFont(font);

Lưu ý rằng ta phải sử dụng thẻ <u> để tạo ký tự gợi ý (gạch chân) "D" và "E" trong HTML. Cũng lưu ý rằng khi nút lệnh bị vô hiệu thì văn bản HTML của nó không may là vân giữ lại màu đen (không phải màu xám). Để khắc phục điều này lại không phải điều đơn giản, ta có thể khắc phục bằng cách sử dụng một thuộc tính để cho phép người dùng chuyển màu, hoặc tùy chỉnh sự xuất hiện disabled hay enabled một cách hợp lý.

Bài viết này bàn luận về cách sử dụng HTML cho văn bản, không phải là text components. Nếu bạn muốn tìm hiểu về điều này xin mời xem bài viết Cách sử dụng Text Component.

» Tiếp: JTextPane
« Trước: Cách sử dụng Tree
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!