Калькулятор, создание поля ввода с выравниванием по правому краю - 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); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д