Advertisement
far_light

Paint

Dec 16th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.65 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.     // Конструктор класса
  19.     public Window() {
  20.         // Устанавливаем фокус и создаём панель
  21.         Panel panel = new Panel();
  22.         setFocusable(true);
  23.  
  24.         // Прикрепляем панель в контент окна
  25.         Container container = getContentPane();
  26.         container.add(panel);
  27.  
  28.         // Размер, заголовок и видимость
  29.         setBounds(128, 64, 800, 600);
  30.         setTitle("Java Application");
  31.         setVisible(true);
  32.     }
  33. }
  34.  
  35. // Класс панели, в котором происходит рисовка графики
  36. class Panel extends JPanel {
  37.     // Массив цветов, выбранный цвет, координаты мышки и условие истинности рисовки
  38.     private Color[] colors;
  39.     private int colorNumber = 0;
  40.     private int mouseX, mouseY;
  41.     private boolean isDraw = false;
  42.  
  43.     // Простые действия мышкой
  44.     class Mouse implements MouseListener {
  45.         // Щелчок мышкой
  46.         @Override
  47.         public void mouseClicked(MouseEvent e) {
  48.  
  49.         }
  50.  
  51.         // Нажатие кнопки мыши
  52.         @Override
  53.         public void mousePressed(MouseEvent e) {
  54.             int tX = e.getX(), tY = e.getY();
  55.             int count = e.getClickCount(), button = e.getButton();
  56.  
  57.             // Курсор в области палитры
  58.             if (tX > 0 && tX < 700 && tY > 0 && tY > 50) {
  59.  
  60.                 if (count == 1 && button == 1) {
  61.                     colorNumber = tX / 100;
  62.                 }
  63.  
  64.             }
  65.         }
  66.  
  67.         // Отпускание кнопки мыши
  68.         @Override
  69.         public void mouseReleased(MouseEvent e) {
  70.  
  71.         }
  72.  
  73.         // Курсор мыши на панели окна
  74.         @Override
  75.         public void mouseEntered(MouseEvent e) {
  76.  
  77.         }
  78.  
  79.         // За пределы панели окна
  80.         @Override
  81.         public void mouseExited(MouseEvent e) {
  82.  
  83.         }
  84.     }
  85.  
  86.     // Варианты при длвижении с мышкой
  87.     class MouseMotion implements MouseMotionListener {
  88.         // Захват = перемещение с зажатой кнопкой
  89.         @Override
  90.         public void mouseDragged(MouseEvent e) {
  91.             int tX = e.getX(), tY = e.getY();
  92.  
  93.             // Если в области, где можно рисовать
  94.             if (tY > 50) {
  95.                 mouseX = tX;
  96.                 mouseY = tY;
  97.                 isDraw = true;
  98.                 repaint();
  99.             }
  100.         }
  101.  
  102.         // Обычное перемещение мыши
  103.         @Override
  104.         public void mouseMoved(MouseEvent e) {
  105.             int x = e.getX(), y = e.getY();
  106.  
  107.             if (x > 0 && x < 700 && y > 0 && y < 50) {
  108.                 setCursor(new Cursor(Cursor.HAND_CURSOR));
  109.             } else {
  110.                 setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  111.             }
  112.         }
  113.     }
  114.  
  115.     // Конструктор класса
  116.     public Panel() {
  117.         // Крепим два обработчика событий
  118.         addMouseListener(new Mouse());
  119.         addMouseMotionListener(new MouseMotion());
  120.  
  121.  
  122.         // Устанавливмем цвета в массиве
  123.         colors = new Color[7];
  124.         colors[0] = Color.black;
  125.         colors[1] = Color.green;
  126.         colors[2] = Color.blue;
  127.         colors[3] = Color.red;
  128.         colors[4] = Color.yellow;
  129.         colors[5] = Color.cyan;
  130.         colors[6] = Color.orange;
  131.     }
  132.  
  133.     // Рисовка происходит каждый шаг
  134.     public void  paintComponent(Graphics graphics) {
  135.         // Рисуем палитру
  136.         for (int i = 0; i < 7; i++) {
  137.             graphics.setColor(colors[i]);
  138.             graphics.fillRect(i * 100, 0, 100, 50);
  139.         }
  140.  
  141.         // Если переменная, говорящая о том, что игрок рисует, истинна - тогда рисуем в окне
  142.         if (isDraw) {
  143.             graphics.setColor(colors[colorNumber]);
  144.             graphics.fillRect(mouseX, mouseY, 3, 3);
  145.         }
  146.     }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement