сейчас я изучаю свой диплом по программированию, у нас есть поставленная задача - создать калькулятор для расчета суммы, среднего, счетчика, введенного максимума и минимума, кнопки отмены и кнопки очистки.Я все сделал, включая кнопку отмены, но мой лектор установил дополнительную возможность кредита, добавив функцию стека в метод отмены.Я разработал, как выдвигать объекты, но я не уверен, как вывести объект и добавить запрошенный объект в мой графический интерфейс.Я понимаю, что в этом нет необходимости, но я хочу делать это всю оставшуюся жизнь, поэтому я очень стараюсь.Если кто-нибудь сможет мне помочь, мой исходный файл будет ниже.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class DataPanel extends JPanel {
ArrayList<Data> dataStore = new ArrayList<Data>();
Stack dataStack = new Stack();
private double _number, _oldNumber;
private double _total, _oldTotal;
private int _count, _oldCount;
private double _average, _oldAverage;
private double _min, _oldMin;
private double _max, _oldMax;
private JTextField _inField = new JTextField();
private JTextField _totalField = new JTextField();
private JTextField _averageField = new JTextField();
private JTextField _minField = new JTextField();
private JTextField _maxField = new JTextField();
private JTextField _countField = new JTextField();
public DataPanel() {
setLayout(new GridLayout(6, 2, 1, 1));
add(new JLabel("Number"));
add(_inField);
_inField.addActionListener(new InFieldListener());
add(new JLabel("Total"));
add(_totalField);
_totalField.setEditable(false);
add(new JLabel("Count"));
add(_countField);
_countField.setEditable(false);
add(new JLabel("Average"));
add(_averageField);
_averageField.setEditable(false);
add(new JLabel("Maximum"));
add(_maxField);
_maxField.setEditable(false);
add(new JLabel("Minimum"));
add(_minField);
_minField.setEditable(false);
}
public void clear() {
_total = 0;
_count = 0;
_average = 0;
_max = 0;
_min = 0;
_inField.setText("");
_totalField.setText("");
_countField.setText("");
_averageField.setText("");
_maxField.setText("");
_minField.setText("");
}
public void undo() {
/*_number = _oldNumber;
_total = _oldTotal;
_count = _oldCount;
_average = _oldAverage;
_max = _oldMax;
_min = _oldMin;
_inField.setText(String.valueOf(_number));
_totalField.setText(String.valueOf(_total));
_countField.setText(String.valueOf(_count));
_averageField.setText(String.valueOf(_average));
_maxField.setText(String.valueOf(_max));
_minField.setText(String.valueOf(_min));*/
/*int size = dataStore.size();
dataStore.remove(size-1);*/
}
private class Data {
private Data(double _number, double _total, int _count, double _average, double _max, double _min) {
_number = _number;
_total = _total;
_count = _count;
_average = _average;
_max = _max;
_min = _min;
}
}
private class InFieldListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(_inField.getText().equals("exit")) {
System.exit(0);
}
try {
_number = Double.parseDouble(_inField.getText());
_inField.setText("");
/*_oldNumber = _number;
_oldTotal = _total;
_oldAverage = _average;
_oldCount = _count;
_oldMax = _max;
_oldMin = _min;*/
_count++;
if(_count == 1) {
_min = _number;
_max = _number;
} else if(_number >= _max) {
_max = _number;
} else if(_number <= _min) {
_min = _number;
}
_total += _number;
_average = _total/_count;
_totalField.setText(String.valueOf(_total));
_countField.setText(String.valueOf(_count));
_averageField.setText(String.valueOf(_average));
_maxField.setText(String.valueOf(_max));
_minField.setText(String.valueOf(_min));
//dataStore.add(new Data(_number, _total, _count, _average, _max, _min));
dataStack.add(new Data(_number, _total, _count, _average, _max, _min));
} catch(NumberFormatException nfe) {
System.out.println("There was a problem: " + nfe);
_inField.setText("");
}
}
}
}
Весь синтаксис, заключенный в / * * /, является исходным методом отмены.