我有JFrame
JLabel
,当我的程序运行时,我想通过JLabel
更改setText()
上的文字。我很清楚,为了在JLabel
中添加一个新行,必须在你希望有一个新行的String周围添加<html>
个标记,然后在标记内,还必须放置<br>
才能创建新行。
然而,我遇到了轻微的打嗝。这是我的MVCE。
import javax.swing.JFrame;
import javax.swing.JLabel;
public class GearsWindow extends JFrame
{
public int x = 200;
public int y = 200;
public int speed = 5;
public String running;
public JLabel l;
public GearsWindow()
{
setSize(300, 200);
setLocation(x, y);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
l = new JLabel();
add(l);
running = "RUNNING";
updateLabel();
setVisible(true);
}
public static void main(String[] args)
{
GearsWindow gw = new GearsWindow();
}
public void updateLabel()
{
String result = running + "<html><br ></html>" + speedStatus();
l.setText(result);
}
public String speedStatus()
{
String result = "Speed - " + speed;
return result;
}
}
如果您要执行此操作,最终会在JFrame
上看到这样的结果......
RUNNING<html><br></html>Speed - 5
现在,我知道简单的方法是将<html>
标记放在每个String
周围,但是,由于程序的复杂程度,它将变得非常困难。我只是展示了一个MVCE,这个程序比这个要大得多。
是否可以使用方法或其他东西对字符串进行HTML-ize?
答案 0 :(得分:3)
这样的通用方法应该有所帮助:
public String toHtml(String strPlain){
if(strPlain==null || strPlain.trim().length()==0) return "";
String res = strPlain.replaceAll("\\n","<BR/>");
res = "<html>"+res+"</html>";
return res;
}
答案 1 :(得分:2)
public void updateLabel()
{
String result = "<html>" + running + "<br >" + speedStatus()+"</html>";
l.setText(result);
}
如果你想准备每个字符串:
public String HTMLize(String temp)
{
return "<html>"+temp+"</html>";
}