如何在Java中HTML-ize一个字符串

时间:2014-10-15 07:29:44

标签: java html swing newline jlabel

我有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?

2 个答案:

答案 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>";
}