使用动作侦听器在文本字段中将double显示为整数

时间:2019-04-27 12:42:19

标签: java actionlistener textfield windowbuilder

按钮上显示数字的方法

class JNumberBtnClick implements ActionListener{
    public void actionPerformed(ActionEvent arg0) {
        JNumberButton sender= (JNumberButton)arg0.getSource();

        textField_1.setText(textField_1.getText()+sender.getNumber());
    }
}

按钮

JNumberButton btnNewButton = new JNumberButton(1.0);
btnNewButton.addActionListener(btnClickEvent);
btnNewButton.setNumber(1.0);
btnNewButton.setBounds(20, 52, 89, 23);
frame.getContentPane().add(btnNewButton);

JNumberButton类

import javax.swing.JButton;

public class JNumberButton extends JButton {

double number;

public JNumberButton(double number) {
    super(Double.toString(number));
    this.number=number;
}

public double getNumber() {
    return number;
}

public void setNumber(double number) {
    this.number=number;
    setText(Integer.toString((int)number));
}
}

这是我使用按钮时的样子。

Screenshot

问题是我必须做什么才能使其显示1而不是1.0?我希望它保持两倍,但我希望它显示为整数。

1 个答案:

答案 0 :(得分:0)

您可以只使用NumberFormat类:

String number = NumberFormat.getInstance().format(1.0);

结果将为1

或者,如果您希望使用其他格式,则可以使用DecimalFormat

String number = new DecimalFormat().format(1.0);

如果需要,可以将模式传递给构造函数。

如果需要,这两种方法也会显示双精度值。如果只想显示整数,则可以使用模式#。这将导致所有双精度数四舍五入为整数:

String number = new DecimalFormat("#").format(1.3);

结果将为1

完整的JNumberButton看起来像这样:

import javax.swing.*;
import java.text.DecimalFormat;

public class JNumberButton extends JButton {
    private static final DecimalFormat format = new DecimalFormat("#");
    private double number;

    public JNumberButton(double number) {
        super(format.format(number));
        this.number = number;
    }

    public double getNumber() {
        return number;
    }

    public void setNumber(double number) {
        setText(format.format(number));
        this.number = number;
    }
}

如上所述,您可以调整格式以适合您的需求。