在JLabel中显示多行文本

时间:2013-04-28 10:03:10

标签: java swing jlabel multiline

我在Jlabel中显示多行有问题。我试图使用html标签,这对我没有帮助。我只是想知道为什么以下代码不起作用。我使用了<br>标记,直到它显示在一行中。 任何帮助请...

我的Java代码如下

package p1;
import javax.swing.*;
import java.awt.*;

public class MemoryUtil 
{
    private static final int MegaBytes = 10241024;

    public static void main(String args[])
    {

        long freeMemory = Runtime.getRuntime().freeMemory()/MegaBytes;
        long totalMemory = Runtime.getRuntime().totalMemory()/MegaBytes;
        long maxMemory = Runtime.getRuntime().maxMemory()/MegaBytes;

        String data="";
        data= data + " <html> JVM Free Memory:  " + Long.toString(freeMemory)+" MB <br>";
        data=data + "Initial Heap Size of JVM : "+ Long.toString(totalMemory) +" MB <br>";
        data= data + " Maximum Heap Size  <br>of JVM: " + Long.toBinaryString(maxMemory) +" MB </html>";
        createAndShowGUI(data); 
    }

    private static void createAndShowGUI(String input) 
    {       
        JFrame frame = new JFrame("JVM Setting of your Machine ");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout( new GridLayout());
        frame.setSize(new Dimension(450, 400));
        frame.setLocation(new Point(400, 200));
        frame.setResizable(true);

        JLabel label = new JLabel(input);
        label.setFont(new Font("Serif", Font.BOLD, 20));
        label.setHorizontalAlignment(JLabel.CENTER);     
        frame.add(label);        
        frame.setVisible(true);
    }   
}

2 个答案:

答案 0 :(得分:1)

<HTML>前面有一个空白区域。删除它并且它有效:data= data + "<html> JVM

答案 1 :(得分:1)

data + " <html> JVM Free Memory:  "

应该更符合:

"<html><body>JVM Free Memory:  "
  1. 它要求<html>元素成为String的第一部分。
  2. 最佳做法是通过添加<body>前缀来使其成为有效的HTML。