使用动作侦听器在textfield中显示double作为整数

问题描述 投票:0回答:1

在按钮上显示数字的方法

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?我希望它保持双倍,但我希望它显示为整数。

java actionlistener textfield windowbuilder
1个回答
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;
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.