Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.vladislav;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- // Главный класс, в котором расположен запускаемый метод
- public class Main {
- // Главный вызываемый метод
- public static void main(String[] args) {
- // Создание окна
- Window window = new Window();
- }
- }
- // Класс окна
- class Window extends JFrame {
- // Конструктор класса
- public Window() {
- // Устанавливаем фокус и создаём панель
- Panel panel = new Panel();
- setFocusable(true);
- // Прикрепляем панель в контент окна
- Container container = getContentPane();
- container.add(panel);
- // Размер, заголовок и видимость
- setBounds(128, 64, 800, 600);
- setTitle("Java Application");
- setVisible(true);
- }
- }
- // Класс панели, в котором происходит рисовка графики
- class Panel extends JPanel {
- // Массив цветов, выбранный цвет, координаты мышки и условие истинности рисовки
- private Color[] colors;
- private int colorNumber = 0;
- private int mouseX, mouseY;
- private boolean isDraw = false;
- // Простые действия мышкой
- class Mouse implements MouseListener {
- // Щелчок мышкой
- @Override
- public void mouseClicked(MouseEvent e) {
- }
- // Нажатие кнопки мыши
- @Override
- public void mousePressed(MouseEvent e) {
- int tX = e.getX(), tY = e.getY();
- int count = e.getClickCount(), button = e.getButton();
- // Курсор в области палитры
- if (tX > 0 && tX < 700 && tY > 0 && tY > 50) {
- if (count == 1 && button == 1) {
- colorNumber = tX / 100;
- }
- }
- }
- // Отпускание кнопки мыши
- @Override
- public void mouseReleased(MouseEvent e) {
- }
- // Курсор мыши на панели окна
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- // За пределы панели окна
- @Override
- public void mouseExited(MouseEvent e) {
- }
- }
- // Варианты при длвижении с мышкой
- class MouseMotion implements MouseMotionListener {
- // Захват = перемещение с зажатой кнопкой
- @Override
- public void mouseDragged(MouseEvent e) {
- int tX = e.getX(), tY = e.getY();
- // Если в области, где можно рисовать
- if (tY > 50) {
- mouseX = tX;
- mouseY = tY;
- isDraw = true;
- repaint();
- }
- }
- // Обычное перемещение мыши
- @Override
- public void mouseMoved(MouseEvent e) {
- int x = e.getX(), y = e.getY();
- if (x > 0 && x < 700 && y > 0 && y < 50) {
- setCursor(new Cursor(Cursor.HAND_CURSOR));
- } else {
- setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- }
- }
- }
- // Конструктор класса
- public Panel() {
- // Крепим два обработчика событий
- addMouseListener(new Mouse());
- addMouseMotionListener(new MouseMotion());
- // Устанавливмем цвета в массиве
- colors = new Color[7];
- colors[0] = Color.black;
- colors[1] = Color.green;
- colors[2] = Color.blue;
- colors[3] = Color.red;
- colors[4] = Color.yellow;
- colors[5] = Color.cyan;
- colors[6] = Color.orange;
- }
- // Рисовка происходит каждый шаг
- public void paintComponent(Graphics graphics) {
- // Рисуем палитру
- for (int i = 0; i < 7; i++) {
- graphics.setColor(colors[i]);
- graphics.fillRect(i * 100, 0, 100, 50);
- }
- // Если переменная, говорящая о том, что игрок рисует, истинна - тогда рисуем в окне
- if (isDraw) {
- graphics.setColor(colors[colorNumber]);
- graphics.fillRect(mouseX, mouseY, 3, 3);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement