Доброго времени суток! Пишу программу похожую на MSPaint для проекта. Вот ссылка на репозиторий с полным проектом -> https://github.com/ALazyGuy/LTP/tree/master/com/LTP/Paint. Суть вот в чем: сейчас добавляю прорисовку прямоугольника. Вот что есть:
package com.LTP.Paint;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
import com.LTP.Paint.objects.Tools;
public class Paint extends JPanel {
public static Tools tool = Tools.PEN;
public static Color selectedColor = Color.YELLOW;
public static Color temp = selectedColor;
public static int size = 2;
public Paint(){
setSize(800, 600);
addMouseListener(new Listener(this));
addMouseMotionListener(new Listener(this));
grabFocus();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, 800, 600);
}
}
class Listener implements MouseListener, MouseMotionListener{
private Paint paint;
public Listener(Paint paint){
this.paint = paint;
}
public void mouseDragged(MouseEvent e) {
mouseClicked(e);
}
public void mouseClicked(MouseEvent e) {
if((Paint.tool == Tools.PEN)){
Graphics g = paint.getGraphics();
g.setColor(Paint.selectedColor);
g.fillRect((int)(e.getX() - (Paint.size / 2)), (int)(e.getY() - (Paint.size / 2)), Paint.size, Paint.size);
}
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
Реализовать прорисовку хочу так:
1) Добавить переменные int x, y в класс Listener.
2) Метод mousePressed реализовать так:
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
/* А тут каким-то на данный момент неизвесным мне способом,
сохранить текущее состояние моей панели. Так, что бы
потом, я мог просто нарисавать это состояние. Например в переменной
BufferedImage добавленной в классе Listener.*/
}
3) Метод mouseDragged реализовать как-то так:
public void mouseDragged(MouseEvent e){
if(Paint.tool == Tools.RECTANGLE){
//На месте этого коментария рисую то сохраненное состояние на панели
Graphics g = paint.getGraphics();
g.setColor(Paint.selectedColor);
g.fillRect(x, y, e.getX() - x, e.getY() - y);
}
}
4) Метод mouseReleased реалезую так же как и mouseDragged, но не рисую состояние панели.
Внимание вопрос! Как сохранить, а затем нарисовать это "Состояние"?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, коллегиПытаюсь решить задачу, но, как всегда, мешает отсутствие опыта
Почему выводит результат true,false,false,true,true? По какой логике? Я так понимаю, if (example[i]) означает, что если данный элемент равен любому значению,...
Есть класс который я хочу протестировать, но когда я использую mock у меня не получается нормальной замены, то есть результирующий метод в классе...
Как сделать так, чтобы при изменении настроек, сцены менялись и работали без проблем?