Калькулятор, создание поля ввода с выравниванием по правому краю - Java

Узнай цену своей работы

Формулировка задачи:

Изучаю java и в задании после написания картинки калькулятора задача: заменить класс JTextField на JFormattedTextField. сама цель задания:

создание поля ввода с выравниванием по правому краю, как в настоящих калькуляторах.

вот мой код:
Листинг программы
  1. :
  2. import javax.swing.*;
  3. import java.awt.GridLayout;
  4. import java.awt.BorderLayout;
  5. public class Calculatop {
  6. //объявление всех компонентов калькулятора
  7. JPanel windowContent;
  8. JTextField displayField;
  9. JButton button0;
  10. JButton button1;
  11. JButton button2;
  12. JButton button3;
  13. JButton button4;
  14. JButton button5;
  15. JButton button6;
  16. JButton button7;
  17. JButton button8;
  18. JButton button9;
  19. JButton buttonPoint;
  20. JButton buttonEqual;
  21. JButton buttonPlus;
  22. JButton buttonMinus;
  23. JButton buttonMultiply;
  24. JButton buttonDivide;
  25. JPanel p1;
  26. JPanel p2;
  27. //в конструкторе создаются все компоненты
  28. //и добавляются на фрейм с помощью комбинации
  29. // BorderLayout u GridLayout
  30. Calculatop(){
  31. windowContent= new JPanel();
  32. //задаем схему для этой панели
  33. BorderLayout bl= new BorderLayout();
  34. windowContent.setLayout(bl);
  35. //создаем и отображаем поле
  36. //добавляем его в северную область окна
  37. displayField = new JTextField(30);
  38. windowContent.add("North", displayField);
  39. //создаем кнопки используя конструктор
  40. //класса JButton, который принимает текст
  41. // кнопк в качестве параметра
  42. button0= new JButton("0");
  43. button1= new JButton("1");
  44. button2= new JButton("2");
  45. button3= new JButton("3");
  46. button4= new JButton("4");
  47. button5= new JButton("5");
  48. button6= new JButton("6");
  49. button7= new JButton("7");
  50. button8= new JButton("8");
  51. button9= new JButton("9");
  52. buttonPoint= new JButton(".");
  53. buttonEqual= new JButton("=");
  54. buttonPlus= new JButton("+");
  55. buttonMinus= new JButton("-");
  56. buttonMultiply= new JButton("*");
  57. buttonDivide= new JButton("/");
  58. //создаем панель с GridLayot
  59. //которая содержит 12 кнопок - 10 кнопок с числами
  60. // и кнопки с точкой и знаком равно
  61. p1=new JPanel();
  62. GridLayout gl= new GridLayout(4,3);
  63. p1.setLayout(gl);
  64. //добавляем кнопки на панель p1
  65. p1.add(button1);
  66. p1.add(button2);
  67. p1.add(button3);
  68. p1.add(button4);
  69. p1.add(button5);
  70. p1.add(button6);
  71. p1.add(button7);
  72. p1.add(button8);
  73. p1.add(button9);
  74. p1.add(button0);
  75. p1.add(buttonPoint);
  76. p1.add(buttonEqual);
  77. //помещаем панель p1 в центральную область окна
  78. windowContent.add("Center",p1);
  79. p2= new JPanel();
  80. p2.setLayout(gl);
  81. p2.add(buttonMinus);
  82. p2.add(buttonPlus);
  83. p2.add(buttonDivide);
  84. p2.add(buttonMultiply);
  85. windowContent.add("East",p2);
  86. //создаем фрейм и задаем его основную панель
  87. JFrame frame= new JFrame("Calculator");
  88. frame.setContentPane(windowContent);
  89. //делаем размер окна достаточным
  90. //для того,чтобы вместились все компоненты
  91. frame.pack();
  92. //отображаем окно
  93. frame.setVisible(true);
  94. }
  95. public static void main(String[] args){
  96. Calculatop calc= new Calculatop();
  97. }
  98. }
я так понял что просто нужно заменить места, где написано JTextField на JFormattedTextField? и пожалуйста если не трудно, ссылку где можно прочитать про эти классы поподробнее
P.S. хотелось бы узнать как заменить эти 10 строчек, которые начинаются
Листинг программы
  1. button0= new JButton("0");
циклом,который создает кнопки и добавляет их в массив. Заранее благодарю за ответы!

Решение задачи: «Калькулятор, создание поля ввода с выравниванием по правому краю»

textual
Листинг программы
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3.  
  4. import javax.swing.JButton;
  5.  
  6. public class CalculatorEngine implements ActionListener {
  7.     Calculator parent;
  8.     char selectedAction = ' ';
  9.     double curentResult = 0;
  10.    
  11.     public CalculatorEngine(Calculator parent) {
  12.         this.parent = parent;
  13.     }
  14.    
  15.     public void actionPerformed(ActionEvent event) {
  16.         JButton clickedButton = (JButton) event.getSource();
  17.         String displayFieldText = parent.displayField.getText();
  18.         double displayValue = 0;
  19.        
  20.         if (!"".equals(displayFieldText)) {
  21.             displayValue = Double.parseDouble(displayFieldText);
  22.         }
  23.        
  24.         Object source = event.getSource();
  25.        
  26.         if (source == parent.jButtonDivide) {
  27.             selectedAction = '/';
  28.             curentResult = displayValue;
  29.             parent.displayField.setText("");
  30.            
  31.         }else if (source == parent.jButtonMultiply) {
  32.             selectedAction = '*';
  33.             curentResult = displayValue;
  34.             parent.displayField.setText("");
  35.            
  36.         }else if (source == parent.jButtonMinus) {
  37.             selectedAction = '-';
  38.             curentResult = displayValue;
  39.             parent.displayField.setText("");
  40.            
  41.         }else if (source == parent.jButtonPlus) {
  42.             selectedAction = '+';
  43.             curentResult = displayValue;
  44.             parent.displayField.setText("");
  45.            
  46.         }else if (source == parent.jButtonEqual) {
  47.            
  48.             if (selectedAction == '/') {
  49.                 curentResult /= displayValue;
  50.                 if (displayValue == 0) {
  51.                 parent.displayField.setText("Cannot divide by zero");
  52.             } else {
  53.                 parent.displayField.setText("" + curentResult);
  54.             }
  55.                
  56.             }else if (selectedAction == '*') {
  57.                 curentResult *= displayValue;
  58.                 parent.displayField.setText("" + curentResult);
  59.                
  60.             }else if (selectedAction == '-') {
  61.                 curentResult -= displayValue;
  62.                 parent.displayField.setText("" + curentResult);
  63.                
  64.             }else if (selectedAction == '+') {
  65.                 curentResult += displayValue;
  66.                 parent.displayField.setText("" + curentResult);
  67.             }
  68.            
  69.         }else if (source == parent.jButtonErase) {
  70.                 curentResult = 0;
  71.                 parent.displayField.setText("");
  72.            
  73.         }else {
  74.             String clickedButtonLabel = clickedButton.getText();
  75.             if (clickedButtonLabel == ".") {
  76.                 if (displayFieldText.indexOf(".") == 1) {
  77.                     parent.displayField.setText(displayFieldText + "");
  78.                 }else {
  79.                     parent.displayField.setText(displayFieldText + clickedButtonLabel);
  80.                 }
  81.             }else {
  82.                 parent.displayField.setText(displayFieldText + clickedButtonLabel);
  83.             }
  84.         }
  85.  
  86.     }
  87.  
  88. }

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


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

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

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы