Отображение double как целое число в текстовом поле с помощью слушателя действия - PullRequest
0 голосов
/ 27 апреля 2019

Метод отображения числа на кнопке

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

Так выглядит при использовании кнопки.

Screenshot

И вопрос, что мне нужно сделать, чтобы он отображал 1 вместо 1,0?Я хочу, чтобы он оставался как двойной, но я хочу, чтобы он отображался как целое число.

1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете просто использовать 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;
    }
}

Как я уже говорил выше, вы можете настроить формат в соответствии со своими потребностями.

...