Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Разработка приложения с GUI-интерфейсом

Автор:   •  Сентябрь 23, 2021  •  Контрольная работа  •  1,290 Слов (6 Страниц)  •  203 Просмотры

Страница 1 из 6

Автономная некоммерческая образовательная организация высшего образования «Сибирский институт бизнеса и информационных технологий»

ИТОГОВАЯ РАБОТА

 По дисциплине «Объектно-ориентированное программирование»

Разработка приложения с GUI-интерфейсом

Выполнил: Сухотнов Вячеслав Михайлович, ИН 29

Проверила: 

Омск 2021

Калькулятор на Java

[pic 1]

Листинг

import java.awt.Color;
import
java.awt.Font;
import
java.awt.Insets;
import
java.awt.KeyEventDispatcher;
import
java.awt.KeyboardFocusManager;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.awt.event.KeyEvent;
import
javax.script.ScriptEngine;
import
javax.script.ScriptEngineManager;
import
javax.script.ScriptException;
import
javax.swing.JButton;
import
javax.swing.JFrame;
import
javax.swing.JTextField;



class
Kalku {
   
public JFrame window = new JFrame("Calculator");
   public
JTextField imput = new JTextField();

   public
Kalku() {    // устанавливаем параметры окна
       
window.setSize(480, 405);
       
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
window.getContentPane().setBackground(Color.white);
       
window.setLayout(null);
       
window.setResizable(false);
       
window.setLocationRelativeTo(null);

       
enter_area();       // подготавливаем окно ввода и обработчик клавиатуры
       
month_button();     // подготовка кнопок
       
window.setVisible(true);
   
}

   
private void enter_area() {
       
imput.setFont(new Font("Arial", Font.BOLD, 24));
       
imput.setBounds(16, 10, 248, 36);
       
imput.setBackground(Color.white);
       
imput.setHorizontalAlignment(JTextField.RIGHT);

       
window.add(imput);

       
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
       
manager.addKeyEventDispatcher(new KeyDispatcher());
   
}


   
// обработка клавиатуры
   
class KeyDispatcher implements KeyEventDispatcher {
       
public boolean dispatchKeyEvent(KeyEvent e) {   // аргумент - событие клавы
           
if (e.getKeyCode() == KeyEvent.VK_ENTER) {  // если нажат ентер - считаем результат
               
result();
           
}

           
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { // если нажат эскейп - очищаем поле ввода
               
imput.setText("");
           
}

           
return false;
       
}
   }


   
private void month_button() {
       
int num = 0;
       
String arr[] = {"1", "2", "3", "С", "4", "5", "6", "*", "7", "8", "9", "-", "0", ".", "+", "/", "(", ")", "="};
       
JButton[] jbutton_n = new JButton[arr.length];  // создаем массив кнопок

       
for (int e = 0; e < 5; e++) {
           
for (int r = 0; r < 4; r++) {
               jbutton_n[num] =
new JButton();         // заполняем этот массив собственно кнопками
               // настраиваем вид кнопок, расположение
               
jbutton_n[num].setFont(new Font("Arial", Font.PLAIN, 36));
               
jbutton_n[num].setText(arr[num]);
               
jbutton_n[num].setMargin(new Insets(0, 0, 0, 0));
               if
(num < arr.length - 1) {
                   jbutton_n[num].setBounds(
16 + r * 62, 55 + e * 62, 60, 60);
               
} else {
                   jbutton_n[num].setBounds(
16 + r * 62, 55 + e * 62, 122, 60);
               
}
               jbutton_n[num].setFocusable(
false);

               
window.add(jbutton_n[num]);     // вешаеам кнопки в окно

               // добавляем кнопкам слушателя событий
               
ActionListener num_button = new GoNumListener();
               
jbutton_n[num].addActionListener(num_button);

               if
(num < arr.length - 1) {
                   num++
;
               
} else {
                   
break;
               
}
           }
       }
   }

   
// слушатель событий кнопок
   
public class GoNumListener implements ActionListener {
       
public void actionPerformed(ActionEvent e) {
           String name = ((JButton) e.getSource()).getText()
;  // получаем текст с кнопки в переменную
           
if (name == "=" || name == "С") {
               
//...
           
} else {
               
// если нажата не "=" и не "С" - добавляем в поле ввода значение кнопки
               
imput.setText(imput.getText() + name);
           
}

           
if (name == "=") {  // если нажата "=" - считаем результат
               
result();
           
}

           
if (name == "С") {  // если нажата "С" - очищаем поле ввода
               
imput.setText("");
           
}

           
window.repaint();   // перерисовываем окно
       
}
   }

   
// подсчет результата. вот тут точно нужно почитать офф.доку :)
   
private void result() {
       ScriptEngineManager factory =
new ScriptEngineManager();
       
ScriptEngine engine = factory.getEngineByName("JavaScript");
       try
{
           
imput.setText("" + engine.eval(imput.getText()));
       
} catch (ScriptException e1) {
           
//...
       
}
   }

   
//  запуск программы
   
public static void main(String[] args) {
       
new Kalku();
   
}
}

...

Скачать:   txt (5.8 Kb)   pdf (309.9 Kb)   docx (208.1 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club