我试图在我的项目中调用一个名为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时它就不会这样做。
原来我在最后四个类中使用了DecimalFormat,这就是给我异常的东西。一旦我摆脱了它,使用JTextPane而不是JtextField很好地格式化了字符串。
答案 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 控件(如图片中所示),则不能将HTML
与JTextField
一起使用。您必须使用JTextPane
。
JTextPane txt = new JTextPane();
txt.setContentType("text/html");
txt.setText("<html>Type: Circle<br>Some info<br>More info</html>");