Java: JTextPane
Giải phóng thời gian, khai phóng năng lực
JTextPane là thành phần văn bản có hỗ trợ văn bản được style. Nó tương tự với JTextArea khi hiển thị nhưng JTextArea chỉ có thể hỗ trợ plain text.
JTextPane có thể hỗ trợ plain-text, HTML, RTF (Rich Text Format) và các thành phần như nút lệnh hay biểu tượng. Văn bản cũng có thể là là các style khác nhau được trộn lẫn.
Bảng dưới đây trình bày các hàm tạo của JTextPane.
Hàm tạo | Mô tả | Ví dụ |
---|---|---|
JTextPane() | Tạo một JTextPane với tài liệu được thiết lập là null. | JTextPane txpText; txpText = new JTextPane(); |
JTextPane(StyledDocument doc) | Tạo một JTextPane với tài liệu doc là đối số có kiểu StyledDocument. | JTextPane txpText; StyledDocument doc = new DefaultStyledDocument(); . . . txpText = new JTextPane(doc); |
Nạp văn bản vào JTextPane
Các bước nạp văn bản vào JTextPane như sau:
1. Truy xuất StyledDocument của JTextPane bằng cách sử dụng phương thức getStyledDocument().
2. Tạo và khởi tạo các style.
3. Thêm style vào style-document.
4. Nạp văn bản bằng phương thức insertString() tới tài liệu đã được style.
Đoạn mã sau thể hiện cách nạp văn bản vào JTextPane.
JTextPane txpPane = new JTextPane();
// Truy xuất StyledDocument
StyledDocument doc = txpPane.getStyledDocument();
// Để khởi tạo style thì trước tiên cần truy xuất vào defaultstyle
Styledef = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
// Sau đó thêm một style chính quy với font là 'SansSerif'
Style regular = doc.addStyle(“regular”, def);
StyleConstants.setFontFamily(def, “SansSerif”);
// Chèn văn bản vào JTextPane bằng cách sử dụng tài liệu đã được style
doc.insertString(doc.getLength(),“Thisisregulartext”, doc.getStyle(“regular”));
Lưu ý: Các style có thể là regular, italic, small và cũng có thể bao gồm các thành phần như JButton.
Hiển thị JTextPane
Để hiển thị JTextPane thì ta truyền một thể hiện của JTextPane tới hàm tạo của JScrollPane, sau đó thêm JScrollPane vào bộ chứa.
Nếu muốn ngăn chặn không cho biên soạn trong JTextPane thì ta sử dụng phương thức setEditable() với đối số là giá trị false.
Đoạn mã sau đây thể hiện cách hiển thị JTextPane và ngăn chặn không không biên soạn.
JFrame frmEditor;
JTextPane txpPane;
…
// Cung cấp text pane cho scroll pane để thiết lập thanh cuộn
JScrollPane scpScroller = new JScrollPane(txpPane);
// Thêm JScrollPane vào frame
frmEditor.getContentPane().add(scpScroller);
// Không cho phép biên soạn JTextPane
txpPane.setEditable(false);
Giải phóng thời gian, khai phóng năng lực