我不能相信多线JLabel的最快解决方案是以下一个(文本来自var,因此我不想每个x字符手动放置HTML代码,它太丑了):
public class JMultilineLabel extends JTextArea{
private static final long serialVersionUID = 1L;
public JMultilineLabel(String text){
super(text);
setEditable(false);
setCursor(null);
setOpaque(false);
setFocusable(false);
setFont(UIManager.getFont("Label.font"));
setWrapStyleWord(true);
setLineWrap(true);
}
}
...确定它不是一个更好的方法来处理这个????
答案 0 :(得分:3)
如果你想要一个multilne标签,那么你只需在其文本中使用HTML
,因为它们支持使用它。因此,请使用线制动标记</br>
来分隔行或在<p></p>
段落标记中添加单独的行。
不要忘记通过使用JLabel
标记开始使用HTML来标记您要使用HTML {。{1}}。
BTW 我忘记检查是否存在其他与<html>
使用相关的问题,并且至少有一些问题,请检查this或this。 :)
修改强>
对于工作样本,显示不同的方法,不设置样式并使用段落和标签占用可用空间,请参阅以下内容:
JLabel
答案 1 :(得分:3)
我需要自动进行换行,而不必解析传入的字符串并将每个x字符放置
<BR>
设置(HTML)的主体宽度。 Swing HTML支持包括基本样式。
我有一些使用CSS来限制位于某处的JLabel
宽度的示例..
是啊,there it is:
import javax.swing.*;
class FixedWidthLabel {
public static void main(String[] srgs) {
String s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu nulla urna. Donec sit amet risus nisl, a porta enim. Quisque luctus, ligula eu scelerisque gravida, tellus quam vestibulum urna, ut aliquet sapien purus sed erat. Pellentesque consequat vehicula magna, eu aliquam magna interdum porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sollicitudin sapien non leo tempus lobortis. Morbi semper auctor ipsum, a semper quam elementum a. Aliquam eget sem metus.";
String html1 = "<html><body style='width: ";
String html2 = "px'>";
JOptionPane.showMessageDialog(null, new JLabel(html1+"200"+html2+s));
JOptionPane.showMessageDialog(null, new JLabel(html1+"300"+html2+s));
}
}