我正在尝试使用多行文本制作一个Swing JLabel。添加起来很好,但是换行符没有通过。我该怎么做呢?或者,我可以只为JLabel指定最大宽度并知道文本会像div一样自动换行吗?
private void addLegend() {
JPanel comparisonPanel = getComparisonPanel();
//this all displays on one line
JLabel legend = new JLabel("MMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\n");
comparisonPanel.add(legend);
}
例如在setText中使用HTML
myLabel.setText("<html><body>with<br>linebreak</body></html>");
如果在html中设置段落宽度,则可以自动换行。
默认情况下,Swing不会换行。如果在JLabel上指定大小,它将仅绘制适合文本的部分,然后在末尾添加“ ...”。
您可以将HTML放入JLabel内,并使用换行标记实现此目的。
关于在JTextArea中使用换行功能呢?
简单,请使用HTML。 Java Swing组件虽然不提供对HTML的“出色”支持,但您可以将其用于如此简单的目的。
我没有为标签指定最大宽度,但是您可以指定具体宽度。通过测量JLabel的当前宽度,我们只能在JLabel的宽度大于我们的maxWidth时应用新的固定宽度: