打破一个字符串以在jlabel中使用html

时间:2014-03-14 13:13:12

标签: java html string split jlabel

这是我的代码:

JLabel JL_Output = new JLabel(Reponse);
JL_Output.setBorder(BorderFactory.createTitledBorder("Output: "));
JL_Output.setPreferredSize(new Dimension(450, 175));
JL_Output.setBackground(Color.red);

所以我的问题是我的Response String太长了,无法在一行中查看。 所以我想使用带有/ br的html我不能整合这些应用程序,因为我无法进入"进入"在字符串中:/

我想以4行显示,就像这样 响应值:

Enter the angle offset
   Units   : [degrees]
   Range   : [-090<+090]
   Current : [+000]                 >>  ERROR

2 个答案:

答案 0 :(得分:1)

假设Response是一个字符串,你可以这样做:

String formattedResponse = Response.replaceAll("\\]", "\\]<br />");
JLabel JL_Output = new JLabel(formattedResponse);
...

这应该用一个闭括号和一个breakline语句替换所有结束括号,这应该是你需要的。

编辑:根据您的评论,您可以使用类似下面的代码来执行您需要的操作:

String formattedResponse = Response.replaceAll("\\s{4,}", "<br />");
JLabel JL_Output = new JLabel("<html>" + formattedResponse + "</html>");

上面的代码将匹配由4个或更多连续空格字符组成的Response字符串中的任何一个,并将其替换为<br />

答案 1 :(得分:0)

我从你的描述中了解到,你收到的文字是长一行并且没有换行符?那么为什么不在你想要的地方创建第二个带换行符的String呢?

但也许您可以使用“JTextarea”禁用它,使其无法修改:

JTextArea textArea = new JTextArea(
  "This is an editable JTextArea. " +
  "A text area is a \"plain\" text component, " +
  "which means that although it can display text " +
  "in any font, all of the text is in the same font."
);
textArea.setFont(new Font("Serif", Font.ITALIC, 16));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);

当然,您可以将字符串转换为HTML。 请参阅此文章以了解换行符的工作原理: Multiline text in JLabel