JLabel HTML新行问题

时间:2014-10-14 11:25:24

标签: java html line jlabel

我试图在我的项目中调用一个名为Circle的类中的方法,该类在JLabel中显示有关该对象的一些基本信息。出于某种原因,即使我使用HTML来尝试格式化,文本也不会进入新行:

@Override
public String toString(){
    return "<html>Type: " + this.getClass().getSimpleName() + "<br>Radius: " + getRadius() + "<br>Area: " + df.format(getArea()) + "<br>Perimeter: </html>" + df.format(getPerimeter());
}

我尝试使用以下代码显示信息:

@Override
public void actionPerformed(ActionEvent ae) {

        if(ae.getSource()==btnCalc && x==1){
            //create object
        double R = Double.parseDouble(Txt1.getText());
        Circle circ = new Circle(R);
        lblResult.setText(circ.toString());
        }

当我运行程序时,它只返回:<html>Type: Circle<br>Radius: 4.0<br>Area: 50.27<br>Perimeter:</html> 25.13

编辑:我尝试将文本设置为异常消息而不是调用方法,它也没有以这种方式工作 编辑:现在当我尝试运行柱面球类时会发生这种情况,但是当我在toString()方法中没有任何html时它就不会这样做。 enter image description here

原来我在最后四个类中使用了DecimalFormat,这就是给我异常的东西。一旦我摆脱了它,使用JTextPane而不是JtextField很好地格式化了字符串。

1 个答案:

答案 0 :(得分:2)

从您粘贴的图片中,它看起来像是文字输入控件(位于Show Info按钮下),如JTextField而不是JLabel

您可以将HTML内容与JLabel构造函数以及setText方法一起使用。它工作正常。

JLabel lbl = new JLabel("<html>Type: Circle<br>Some info<br>More info</html>")

JLabel lbl2 = new JLabel();
lbl2.setText("<html>Type: Circle<br>Some info<br>More info</html>")

但是,如果您想要 INPUT 控件(如图片中所示),则不能将HTMLJTextField一起使用。您必须使用JTextPane

JTextPane txt = new JTextPane();
txt.setContentType("text/html");
txt.setText("<html>Type: Circle<br>Some info<br>More info</html>");