正如标题所说:我需要将JLabel放入JFrame中,但JLabel中的文本太长,所以我需要添加一些换行符。 JLabel中的文本是从在线XML文件中获取的,因此我只能将文本更改为包含换行符。
此代码从XML文件中提取数据
Element element = (Element)nodes1.item(i);
String vær = getElementValue(element,"body");
String v = vær.replaceAll("<.*>", "" );
String forecast = "Vær: " + v;
在这种情况下,字符串我想在字符串v中添加一些换行符。字符串v包含来自xml文件的已解析数据。返回String预测并将其设置为JLabel的文本。
请先询问是否有事情未清除,提前谢谢!
答案 0 :(得分:12)
我建议使用JTextArea
来改变包装。在JLabel
中执行此操作的唯一方法是设置换行符<br />
,如果您事先不知道文本,则会在您的情况下无效(至少不容易)。
JTextArea
更加灵活。默认情况下它看起来不同,但您可以摆弄一些显示属性,使其看起来像JLabel
。
public class JTextAreaDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame("JTextArea Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
JTextArea textArea = new JTextArea(
"If there is anything the nonconformist hates worse " +
"than a conformist, it's another nonconformist who " +
"doesn't conform to the prevailing standard of nonconformity.",
6,
20);
textArea.setFont(new Font("Serif", Font.ITALIC, 16));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setOpaque(false);
textArea.setEditable(false);
panel.add(textArea);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
答案 1 :(得分:5)
JLabel能够显示HTML文本,即如果用<html>your text<html>
包装文本,它可能能够包装文本。虽然没有经过测试,所以YMMV。
答案 2 :(得分:1)
您可以动态告诉您的JLabel调整自身大小以适应文本。
如果您没有使用LayoutManager,请尝试:
jLabel.setText ("A somewaht long message I would not want to
stop");
jLabel.setSize(jLabel.getPreferredSize());
如果您使用的是布局管理器,则此代码段应该有效:
jLabel.setText ("A somewaht long message I would not want to
stop");
jLabel.validate();