Калькулятор, создание поля ввода с выравниванием по правому краю - Java
Формулировка задачи:
Изучаю java и в задании после написания картинки калькулятора задача:
заменить класс JTextField на JFormattedTextField.
сама цель задания:
циклом,который создает кнопки и добавляет их в массив.
Заранее благодарю за ответы!
создание поля ввода с выравниванием по правому краю, как в настоящих калькуляторах.
вот мой код:
Листинг программы
- :
- import javax.swing.*;
- import java.awt.GridLayout;
- import java.awt.BorderLayout;
- public class Calculatop {
- //объявление всех компонентов калькулятора
- JPanel windowContent;
- JTextField displayField;
- JButton button0;
- JButton button1;
- JButton button2;
- JButton button3;
- JButton button4;
- JButton button5;
- JButton button6;
- JButton button7;
- JButton button8;
- JButton button9;
- JButton buttonPoint;
- JButton buttonEqual;
- JButton buttonPlus;
- JButton buttonMinus;
- JButton buttonMultiply;
- JButton buttonDivide;
- JPanel p1;
- JPanel p2;
- //в конструкторе создаются все компоненты
- //и добавляются на фрейм с помощью комбинации
- // BorderLayout u GridLayout
- Calculatop(){
- windowContent= new JPanel();
- //задаем схему для этой панели
- BorderLayout bl= new BorderLayout();
- windowContent.setLayout(bl);
- //создаем и отображаем поле
- //добавляем его в северную область окна
- displayField = new JTextField(30);
- windowContent.add("North", displayField);
- //создаем кнопки используя конструктор
- //класса JButton, который принимает текст
- // кнопк в качестве параметра
- button0= new JButton("0");
- button1= new JButton("1");
- button2= new JButton("2");
- button3= new JButton("3");
- button4= new JButton("4");
- button5= new JButton("5");
- button6= new JButton("6");
- button7= new JButton("7");
- button8= new JButton("8");
- button9= new JButton("9");
- buttonPoint= new JButton(".");
- buttonEqual= new JButton("=");
- buttonPlus= new JButton("+");
- buttonMinus= new JButton("-");
- buttonMultiply= new JButton("*");
- buttonDivide= new JButton("/");
- //создаем панель с GridLayot
- //которая содержит 12 кнопок - 10 кнопок с числами
- // и кнопки с точкой и знаком равно
- p1=new JPanel();
- GridLayout gl= new GridLayout(4,3);
- p1.setLayout(gl);
- //добавляем кнопки на панель p1
- p1.add(button1);
- p1.add(button2);
- p1.add(button3);
- p1.add(button4);
- p1.add(button5);
- p1.add(button6);
- p1.add(button7);
- p1.add(button8);
- p1.add(button9);
- p1.add(button0);
- p1.add(buttonPoint);
- p1.add(buttonEqual);
- //помещаем панель p1 в центральную область окна
- windowContent.add("Center",p1);
- p2= new JPanel();
- p2.setLayout(gl);
- p2.add(buttonMinus);
- p2.add(buttonPlus);
- p2.add(buttonDivide);
- p2.add(buttonMultiply);
- windowContent.add("East",p2);
- //создаем фрейм и задаем его основную панель
- JFrame frame= new JFrame("Calculator");
- frame.setContentPane(windowContent);
- //делаем размер окна достаточным
- //для того,чтобы вместились все компоненты
- frame.pack();
- //отображаем окно
- frame.setVisible(true);
- }
- public static void main(String[] args){
- Calculatop calc= new Calculatop();
- }
- }
я так понял что просто нужно заменить места, где написано JTextField на JFormattedTextField?
и пожалуйста если не трудно, ссылку где можно прочитать про эти классы поподробнее
P.S. хотелось бы узнать как заменить эти 10 строчек, которые начинаются
Листинг программы
- button0= new JButton("0");
Решение задачи: «Калькулятор, создание поля ввода с выравниванием по правому краю»
textual
Листинг программы
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.JButton;
- public class CalculatorEngine implements ActionListener {
- Calculator parent;
- char selectedAction = ' ';
- double curentResult = 0;
- public CalculatorEngine(Calculator parent) {
- this.parent = parent;
- }
- public void actionPerformed(ActionEvent event) {
- JButton clickedButton = (JButton) event.getSource();
- String displayFieldText = parent.displayField.getText();
- double displayValue = 0;
- if (!"".equals(displayFieldText)) {
- displayValue = Double.parseDouble(displayFieldText);
- }
- Object source = event.getSource();
- if (source == parent.jButtonDivide) {
- selectedAction = '/';
- curentResult = displayValue;
- parent.displayField.setText("");
- }else if (source == parent.jButtonMultiply) {
- selectedAction = '*';
- curentResult = displayValue;
- parent.displayField.setText("");
- }else if (source == parent.jButtonMinus) {
- selectedAction = '-';
- curentResult = displayValue;
- parent.displayField.setText("");
- }else if (source == parent.jButtonPlus) {
- selectedAction = '+';
- curentResult = displayValue;
- parent.displayField.setText("");
- }else if (source == parent.jButtonEqual) {
- if (selectedAction == '/') {
- curentResult /= displayValue;
- if (displayValue == 0) {
- parent.displayField.setText("Cannot divide by zero");
- } else {
- parent.displayField.setText("" + curentResult);
- }
- }else if (selectedAction == '*') {
- curentResult *= displayValue;
- parent.displayField.setText("" + curentResult);
- }else if (selectedAction == '-') {
- curentResult -= displayValue;
- parent.displayField.setText("" + curentResult);
- }else if (selectedAction == '+') {
- curentResult += displayValue;
- parent.displayField.setText("" + curentResult);
- }
- }else if (source == parent.jButtonErase) {
- curentResult = 0;
- parent.displayField.setText("");
- }else {
- String clickedButtonLabel = clickedButton.getText();
- if (clickedButtonLabel == ".") {
- if (displayFieldText.indexOf(".") == 1) {
- parent.displayField.setText(displayFieldText + "");
- }else {
- parent.displayField.setText(displayFieldText + clickedButtonLabel);
- }
- }else {
- parent.displayField.setText(displayFieldText + clickedButtonLabel);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д