我不敢相信多行 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);
}
}
...当然这不是处理这个问题的更好方法???
如果您想要多行标签,那么您只需使用HTML
在其文本中,因为他们支持其使用。因此,使用线制动标签</br>
断行或放置单独的行<p></p>
段落标签。
不要忘记标记您想要使用 HTMLJLabel
其文本以<html>
tag.
更多信息请点击这里。
BTW我忘了检查是否还有其他相关问题JLabel
使用并且至少有一些,检查this or this. :)
EDIT:
对于显示不同方法的工作示例,无需设置样式并使用段落和标签占用可用空间,请参见下文:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*;
public class LabelHTMLAutoResize {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new BorderLayout());
JLabel l = new JLabel("<html><p> Some verrrry long text Some verrrry long Some verrrry long text dsa ads oiosi o</p>");
l.setVerticalAlignment(SwingConstants.TOP);
l.setOpaque(true);
l.setBackground(Color.green);
p.add(l);
f.setContentPane(p);
/* good practice is to use f.pack(); and let the size be automatically calculated but we want to show line wrapping thus frame size is set */
f.setSize(200, 200);
f.setVisible(true);
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)