M11 Java Paint App Session 3
M11 Java Paint App Session 3
Group 131
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.border.TitledBorder;
public PaintApp() {
setTitle(" 🚀 PAINT APP🎨");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
initializeComponents();
setupLayout();
setSize(1000, 700);
setLocationRelativeTo(null);
setVisible(true);
strokeColorDisplay.setBorder(BorderFactory.createTitledBorder("Current
Stroke"));
colorPanel.add(strokeColorDisplay);
fillColorDisplay.setBorder(BorderFactory.createTitledBorder("Current
Fill"));
fillColorPanel.add(fillColorDisplay);
}
private void updateStrokeColorDisplay() {
if (strokeColorDisplay != null) {
strokeColorDisplay.setBackground(currentColor);
strokeColorDisplay.repaint();
}
}
add(topPanel, BorderLayout.NORTH);
add(new JScrollPane(drawingPanel), BorderLayout.CENTER);
public DrawingPanel() {
setPreferredSize(new Dimension(800, 600));
setBackground(backgroundColor);
addMouseListeners();
}
if (currentTool.equals("PENCIL") ||
currentTool.equals("ERASER")) {
drawPoint(e.getPoint());
repaint();
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (isDrawing && SwingUtilities.isLeftMouseButton(e))
{
endPoint = e.getPoint();
switch (currentTool) {
case "RECTANGLE":
drawRectangle();
break;
case "OVAL":
drawOval();
break;
case "STAR":
drawStar(); // ¡ÉPICO!
break;
case "HEART":
drawHeart(); // ¡SÚPER ÉPICO!
break;
case "LIGHTNING":
drawLightning(); // ¡MEGA ÉPICO!
break;
case "SPIRAL":
drawSpiral(); // ¡ULTRA ÉPICO!
break;
}
isDrawing = false;
repaint();
}
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
if (isDrawing && SwingUtilities.isLeftMouseButton(e)
&& (currentTool.equals("PENCIL") ||
currentTool.equals("ERASER"))) {
drawLine(startPoint, e.getPoint());
startPoint = e.getPoint();
repaint();
}
}
});
}
g2d.setColor(drawColor);
g2d.setStroke(new BasicStroke(brushSize,
BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
g2d.fillOval(point.x - brushSize / 2, point.y - brushSize / 2,
brushSize, brushSize);
}
g2d.setColor(drawColor);
g2d.setStroke(new BasicStroke(brushSize,
BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
g2d.drawLine(start.x, start.y, end.x, end.y);
}
if (rainbowMode)
g2d.setColor(getRainbowColor());
g2d.drawLine(lastPoint.x, lastPoint.y, x, y);
lastPoint = new Point(x, y);
}
}
g2d.setColor(sparkleColor);
g2d.fillOval(x, y, 3, 3);
switch (shape) {
case 0:
g2d.drawRect(x, y, size, size);
break;
case 1:
g2d.drawOval(x, y, size, size);
break;
case 2:
g2d.drawLine(x, y, x + size, y + size);
break;
case 3:
g2d.fillOval(x, y, size / 2, size / 2);
break;
}
}
repaint();
JOptionPane.showMessageDialog(PaintApp.this, " 🎲 ¡ARTE RANDOM
GENERADO! 🎨");
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(canvas, 0, 0, null);
}
}