Advertisement
far_light

Калькулятор, второе занятие

Dec 23rd, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1. package com.vladislav;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6.  
  7. // Главный класс, в котором расположен запускаемый метод
  8. public class Main {
  9.     // Главный вызываемый метод
  10.     public static void main(String[] args) {
  11.         // Создание окна
  12.         Window window = new Window();
  13.     }
  14. }
  15.  
  16. // Класс окна
  17. class Window extends JFrame {
  18.     private JTextArea result;
  19.     private double first = 0.0, second = 0.0;
  20.     private int operation = 0;
  21.  
  22.     // Конструктор класса
  23.     public Window() {
  24.         // Устанавливаем фокус и создаём панель
  25.         Panel panel = new Panel();
  26.         setFocusable(true);
  27.  
  28.         // Шрифты
  29.         Font buttonFont = new Font("serif", 0, 20),
  30.                 labelFont = new Font("arial", 1, 30),
  31.                 textFont = new Font("arial", 2, 30);
  32.  
  33.         // Для произвольного прикрепления
  34.         panel.setLayout(null);
  35.  
  36.         // Attach buttons
  37.         JButton[] buttons = new JButton[17];
  38.         for (int i = 0; i < buttons.length; i++) {
  39.             buttons[i] = new JButton();
  40.  
  41.             // Размеры, шрифт и координаты кнопки
  42.             buttons[i].setSize(100, 25);
  43.             buttons[i].setFont(buttonFont);
  44.             buttons[i].setLocation(30, 50 + i * 30);
  45.  
  46.             buttons[i].addActionListener(new ActionListener() {
  47.                  @Override
  48.                  public void actionPerformed(ActionEvent e) {
  49.                      // Вызываем метод обработки кнопок
  50.                      buttonClick((JButton)e.getSource());
  51.                  }
  52.             });
  53.  
  54.             // Крепим кнопку в панель
  55.             panel.add(buttons[i]);
  56.         }
  57.  
  58.         // Названия для кнопок. Числа - циклом, символы - вручную
  59.         for (int i = 0; i < 10; i++)
  60.             buttons[i].setText(i + "");
  61.         buttons[10].setText("+");
  62.         buttons[11].setText("-");
  63.         buttons[12].setText("/");
  64.         buttons[13].setText("*");
  65.         buttons[14].setText("=");
  66.         buttons[15].setText("C");
  67.         buttons[16].setText("Выход");
  68.  
  69.         // Прикрепим текст
  70.         result = new JTextArea();
  71.  
  72.         // Шрифт, границы, цвет шрифта и фона. Так же прикрепляем
  73.         result.setFont(textFont);
  74.         result.setBounds(300, 10, 300, 35);
  75.         result.setForeground(new Color(0, 0, 128));
  76.         result.setBackground(Color.WHITE);
  77.         panel.add(result);
  78.  
  79.         // Абсолютно теже самые действия, но только для обычного текста
  80.         JLabel label = new JLabel("Результат: ");
  81.         label.setFont(labelFont);
  82.         label.setBounds(130, 0, 300, 50);
  83.         panel.add(label);
  84.  
  85.         // Прикрепляем панель в контент окна
  86.         Container container = getContentPane();
  87.         container.add(panel);
  88.  
  89.         // Размер, заголовок и видимость
  90.         setBounds(128, 64, 800, 600);
  91.         setTitle("Calculator");
  92.         setVisible(true);
  93.     }
  94.  
  95.     private void buttonClick(JButton button) {
  96.         // Здесь мы будем писать обработку событий различных кнопок в следующем уроке!
  97.     }
  98. }
  99.  
  100. // Класс панели, в котором происходит рисовка графики
  101. class Panel extends JPanel {
  102.  
  103.     // Конструктор класса
  104.     public Panel() {
  105.  
  106.     }
  107.  
  108.     // Рисовка происходит каждый шаг
  109.     public void  paintComponent(Graphics graphics) {
  110.         super.paintComponent(graphics);
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement