Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2017, 14:23   #1
elena-2017
Новичок
Джуниор
 
Регистрация: 29.03.2017
Сообщений: 1
По умолчанию Калькулятоp на Java из книги Фаина

Скажите пожалуйста, как создать отдельный файл для класса CalculatorEngine, чтобы он был связан с MyNewCalculator. Я так поняла, что из-за того, что все в одном файле программа не работает. При компиляции пишет, что не видит main.

import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;

public class CalculatorEngine implements ActionListener
{
MyNewCalculator parent;
char selectedAction = ' ';
double currentResult =0;

CalculatorEngine(MyNewCalculator parent)
{
this.parent = parent;
}

public void actionPerformed(ActionEvent e)
{
//получить источник действия
JButton clickedButton = (JButton)e.getSource();
String dispFieldText = parent.displayField.getText();
double displayValue=0;
//получить число из дисплея калькулятора, если он не пустой
if (!" ".equals(dispFieldText))
{
displayValue = Double.parseDouble(dispFieldText);
}

Object src = e.getSource();
//для каждой кнопки арифметического действия запомнить его,
//сохраниить текущее число в переменной currentResult
//и очистить дисплей для ввода нового числа
if (src == parent.buttonPlus){
selectedAction = '+';
currentResult=displayValue;
parent.displayField.setText("");
}
else if(src == parent.buttonMinus){
selectedAction='-';
currentResult=displayValue;
parent.displayField.setText("");
}else if (src == parent.buttonDivide){
selectedAction='/';
currentResult=displayValue;
parent.displayField.setText("");
}else if (src == parent.buttonMultiply){
selectedAction='*';
currentResult = displayValue;
parent.displayField.setText("");
}else if(src == parent.buttonEqual){
if (selectedAction=='+'){
currentResult+=displayValue;
parent.displayField.setText("" + currentResult);
}else if(selectedAction=='-'){
currentResult-=displayValue;
parent.displayField.setText(""+ currentResult);
}else if (selectedAction=='*'){
currentResult*=displayValue;
parent.displayField.setText(""+ currentResult);
}else{
String clickedButtonLabel = clickedButton.getText();
parent.displayField.setText(dispFie ldText + clickedButtonLabel);
}
}
}

public class MyNewCalculator {
//Объявляем и инициализируем компоненты окна
JButton button0 = new JButton();
JButton button1 = new JButton();
JButton button2 = new JButton();
JButton button3 = new JButton();
JButton button4 = new JButton();
JButton button5 = new JButton();
JButton button6 = new JButton();
JButton button7 = new JButton();
JButton button8 = new JButton();
JButton button9 = new JButton();
JButton buttonPoint = new JButton(".");
JButton buttonEqual = new JButton("=");

JButton buttonPlus = new JButton("+");
JButton buttonMinus = new JButton("-");
JButton buttonDivide = new JButton("/");
JButton buttonMultiply = new JButton("*");

JPanel windowContent = new JPanel();
JTextField displayField = new JTextField();

// Конструктор
MyNewCalculator(){
// Установить расположения для панели
BorderLayout b1 = new BorderLayout();
windowContent.setLayout(b1);
windowContent.add("North", displayField);
//создаем панель с менеджером расположения GridLayout
// в которой будет 12 кнопок - 10 цифр, и кнопки "точка" и "равно"
JPanel p1 = new JPanel();
GridLayout gl = new GridLayout(4,3);
p1.setLayout(gl);
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);
// создаем панель с менеджером расположения GridLayout
// на которой будет 4 кнопки - плюс, минус, разделить, умножить
JPanel p2 = new JPanel();
GridLayout gl2 = new GridLayout(4,1);
p2.setLayout(gl2);
p2.add(buttonPlus);
p2.add(buttonMinus);
p2.add(buttonMultiply);
p2.add(buttonDivide);
//добавляем панель p2 в правую часть окна
windowContent.add("East", p2);
//Создаем фрейм и добавляем в него содержимое
JFrame frame = new JFrame("Calculator");
frame.setContentPane(windowContent) ;
//устанавливаем размер окна, так чтобы уместились все компоненты
frame.pack();
//показываем окно
frame.setVisible(true);
}

// создаем экземпляр слушателя событий и регистрируем его в каждой кнопке
CalculatorEngine calcEngine = new CalculatorEngine(this);
{
button0.addActionListener(calcEngin e);
button1.addActionListener(calcEngin e);
button2.addActionListener(calcEngin e);
button3.addActionListener(calcEngin e);
button4.addActionListener(calcEngin e);
button5.addActionListener(calcEngin e);
button6.addActionListener(calcEngin e);
button7.addActionListener(calcEngin e);
button8.addActionListener(calcEngin e);
button9.addActionListener(calcEngin e);
buttonPoint.addActionListener(calcE ngine);
buttonPlus.addActionListener(calcEn gine);
buttonDivide.addActionListener(calc Engine);
buttonMinus.addActionListener(calcE ngine);
buttonMultiply.addActionListener(ca lcEngine);
}
}
public static void main (String[] args)
{
MyNewCalculator calcEngine = new MyNewCalculator();
}
}
elena-2017 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги по многопоточности в Java _Osaka Общие вопросы по Java, Java SE, Kotlin 1 13.02.2017 19:52
Java-книги Makc4k Свободное общение 6 07.02.2013 02:29
Какие книги купить по Java, Python, Html severest Помощь студентам 0 07.01.2013 17:04
Книги по Java Sylar9 Общие вопросы по Java, Java SE, Kotlin 3 25.03.2012 02:33
Java книги для программиствов Izhic Свободное общение 7 08.09.2009 01:12