Калькулятор, создание поля ввода с выравниванием по правому краю - 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);
            }
        } 
 
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы