Одна вещь, которую вы можете сделать, чтобы убрать много повторений, - это использовать один ActionListener
для всех ваших кнопок.Вы можете установить атрибут actionCommand
для каждой кнопки, которую слушатель действия будет использовать для определения, какая кнопка была нажата.
Вот общая иллюстрация:
private ActionListener btnListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
switch (event.getActionCommand()) {
case "0":
case "1":
// ...
case "9":
enterDigit(event.getActionCommand());
break;
}
}
};
public gui(){
one = new JButton("1");
one.setActionCommand("1");
one.addActionListener(btnListener);
two = new JButton("2");
two.setActionCommand("2");
two.addActionListener(btnListener);
// ...
}
Что касается комбинирования отдельныхцифровые кнопки нажимают для формирования больших чисел, это может быть несколько способов, в зависимости от того, как вы хотите сохранить свои номера.
Возможно, проще всего начать с использования String
s, в этом случае вы просто добавляете String
содержащий входную цифру (которая поступила из actionCommand JButton
) в существующие String
ранее введенных цифр:
private String numberInDisplay = "";
// remember enterDigit from the ActionListener above? This is it...
private void enterDigit(String digit){
numberInDisplay = numberInDisplay + digit;
}
Если вы хотите использовать числовой тип, такой как long
, вы просто умножаете существующее число на десять и добавляете значение новой цифры:
private long numberInDisplay = 0;
private void enterDigit(String digit){
numberInDisplay = numberInDisplay * 10 + Long.valueOf(digit);
Конечно, это довольно упрощенный пример.Если вы захотите обработать десятичные точки, отрицательные знаки, научную запись и т. Д., Возникнут некоторые дополнительные сложности, но это, по крайней мере, должно привести вас к правильному пути.