使用动作侦听器在文本字段中显示双精度整数

Displaying double as integer in textfield using action listener

按钮显示数字的方法

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 class

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));
}
}

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

问题是我必须怎么做才能让它显示 1 而不是 1.0?我希望它保持双精度,但我希望它显示为整数。

你可以直接使用 NumberFormat class:

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;
    }
}

正如我上面提到的,您可以调整格式以满足您的需要。