【问题标题】:Break a String to use html in jlabel打破字符串以在 jlabel 中使用 html
【发布时间】:2014-03-14 13:13:11
【问题描述】:

这是我的代码:

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

所以我的问题是我的响应字符串太长而无法在一行中查看。 所以我想使用带有 /br nut 的 html 我无法集成这些应答器,因为我无法在字符串中“输入”:/

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

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

【问题讨论】:

  • 是否在字符串中使用\n 来表示新行?
  • 不幸的是,我无法更改收到的回复:/

标签: java html string split jlabel


【解决方案1】:

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

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

这应该用一个右括号和一个断线语句替换所有右括号,这应该可以满足您的需要。

编辑:根据您的评论,您可以使用下面的代码来做您需要的事情:

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

上面的代码将匹配由 4 个或更多连续空白字符组成的任何 Response 字符串,并将它们替换为 &lt;br /&gt;

【讨论】:

  • 是的,当然这仅适用于此响应,但我可能有 100 个响应。如果有超过4个空格,是否可以放一个?
  • 好的,我想我明白其中的逻辑,我会告诉你它是否有效。谢谢
  • @D3fman:好的。仅供参考,我的编辑中有一个小错字(遗漏了一组引号),所以请确保您不要犯同样的错误。
  • 最后一个小问题,如何将放在字符串的开头?
  • 谢谢,是的,我忘记了“”-_-
【解决方案2】:

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

但也许您可以使用“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

【讨论】:

  • 问题是你如何获得回复文本?因为响应是由设备生成的,我通过执行 readSerialPort 得到响应,然后我将响应以字节为单位转换为字符串类型。
  • 可以,但您可以复制和修改文本。就像取 40 个字符,插入一个换行符,然后取接下来的 40 个字符并插入下一个换行符……等等。之后你有一个新的字符串,包括可以显示的换行符。
  • 尝试使用 JTextArea 更简单:-)
猜你喜欢
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
相关资源
最近更新 更多