在 Java Swing 開發中,標準元件如 JLabel、JButton 等預設只支援純文字顯示。若想實現富文本效果——例如混合顏色、字型大小、粗體、斜體、列表等——最簡單的方法就是利用 Swing 內建的 HTML 渲染支援。本文透過一個完整範例,示範如何在 JPanel 中結合 JTextArea(編輯區)與 JLabel(預覽區),即時呈現 HTML 內容。
範例程式 HtmlDemo 繼承 JPanel 並實作 ActionListener,主要包含三大區塊:
JTextArea(置於 JScrollPane)與「改變顯示」按鈕,供使用者輸入或修改 HTML 字串。JLabel,水平垂直置中顯示渲染後的 HTML。main() 建立 JFrame,將 HtmlDemo 面板設為內容窗格並顯示視窗。String initialText = "<html>\n" +
"顏色和字體測試:\n" +
"<ul>\n" +
"<li><font color=red>red</font>\n" +
"<li><font color=blue>blue</font>\n" +
"<li><font color=green>green</font>\n" +
"<li><font size=-2>small</font>\n" +
"<li><font size=+2>large</font>\n" +
"<li><i>italic</i>\n" +
"<li><b>bold</b>\n" +
"</ul>\n";
字串必須以 <html> 開頭,Swing 才會啟動 HTML 渲染器。支援的標籤包含 <font>(顏色、大小)、<b>、<i>、<ul>/<li> 等基本排版元素。
theLabel = new JLabel(initialText) {
public Dimension getPreferredSize() { return new Dimension(200, 200); }
public Dimension getMinimumSize() { return new Dimension(200, 200); }
public Dimension getMaximumSize() { return new Dimension(200, 200); }
};
覆寫三個尺寸方法,確保預覽區大小固定,避免版面因內容長短而跳動。
public void actionPerformed(ActionEvent e) {
theLabel.setText(htmlTextArea.getText());
}
使用者點擊按鈕後,直接將編輯區文字設給 JLabel,Swing 會自動重繪 HTML。
啟動後會出現左右分欄視窗:左側可編輯 HTML 原始碼,右側即時顯示渲染結果。預設載入的範例會展示紅/藍/綠文字、大小字體、斜體與粗體等效果。
setToolTipText 亦支援 HTML)。Swing 內建的 HTML 支援雖不如瀏覽器完整,但對於簡單富文本需求已足夠。善用 JLabel、JButton、JToolTip 等元件的 HTML 渲染特性,即可在不引入外部函式庫的前提下,大幅提升介面表現力。