如何實現支持換行和換行的面板? 我只會將文本標籤和換行符添加到此面板。 標籤應該從左向右流動,如果需要 ,則打包到下一個「行」。換行符會導致跳到下一行。 我也想讓面板垂直滾動。在Java Swing中使用線包裝和換行的面板
該解決方案應該在Java 5中工作。可以使用SwingX。
說明:文本標籤實際上是JXHyperlink
(來自SwingX), ,即面板包含可點擊標籤。這就是我不能只用 JTextArea
的原因。
如何實現支持換行和換行的面板? 我只會將文本標籤和換行符添加到此面板。 標籤應該從左向右流動,如果需要 ,則打包到下一個「行」。換行符會導致跳到下一行。 我也想讓面板垂直滾動。在Java Swing中使用線包裝和換行的面板
該解決方案應該在Java 5中工作。可以使用SwingX。
說明:文本標籤實際上是JXHyperlink
(來自SwingX), ,即面板包含可點擊標籤。這就是我不能只用 JTextArea
的原因。
我發現JTextPane
,我曾由於某種原因,之前被忽視。這個班做我需要的。
儘管感謝您的幫助。 :)
更新:我錯過了超鏈接支持的請求。不知道如何使用EditorPane做到這一點。
JTextArea完全符合您所描述的內容。
JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);
雖然這可能不是你在尋找的是一個解決方案,但是從你的要求,這似乎是一個自定義的LayoutManager
可能能夠達到你所追求的。通過設計和分配允許換行符到Container
(如Panel
)的自定義佈局管理器,應該可以有一個允許換行的Panel
。
從The Java Tutorials的Laying Out Components Within a Container文章將提供佈局管理器在Java中是如何工作的一般信息,以及特別是Creating a Custom Layout Manager將提供關於如何使一個自定義佈局管理器應用到Container
信息。
FlowLayout
(Panel
的默認佈局管理器)的行爲看起來與您之後的行爲非常接近。爲換行添加功能看起來像是缺失的部分。
建議:也許自定義佈局管理器可具有由具有Component
表示換行,這可以通過使用add()
方法被添加到Container
到添加換行符的能力。
例如,有一個類的自定義佈局管理不斷Component
,如(假設的)LineBreakLayout.LINE_BREAK
,並補充說,到Container
可以告訴自定義佈局管理器移動到下一行。也許一個實現可以是這樣的:
Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));
上面假想然後LineBreakLayout
將呈現在一條線的第一和Label
在第二行第二Label
。
alt text http://img187.imageshack.us/img187/3238/wraprn0.png
該樣品是不是從一個面板,即一個容器,但是從一個JLabel,即旨在顯示內容。
您可以在您的內容中使用HTML,並在每次休息時使用<br>。您應根據您的組件大小調整規則以編程方式計算休息時間。
下面的代碼:
import javax.swing.*;
import java.awt.*;
public class Wrap {
public static void main(String [] args) {
JFrame frame = new JFrame("Wrap test");
String text = "<html>This<br>is<br>a<br>multiline<br>label</html>";
frame.add(new JLabel(text));
frame.pack();
frame.setVisible(true);
}
}
我想使標籤可點擊,以便他們可以表現得像超鏈接。我可以用TextArea來做嗎? (我不想在HTML中使用JEditorPane。) – Kaarel 2009-01-20 12:40:14
任何反對JEditorPane的原因(我只是好奇)? – basszero 2009-01-20 12:47:47