Título: Cambiar color al pintar (JComponent)
Publicado por: estudianteuv en 13 Mayo 2019, 02:55 am
Sinceramente soy malo en JAVA. Tengo una duda, ¿cómo podría cambiar de color a la hora de pintar en el canvas? Algo así como una paleta de colores. No sé como se podría hacer, ayuda! package com.mycompany.mavenproject3;
import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Shape; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Line2D; import java.util.ArrayList; import javax.swing.JComponent; import javax.swing.JFrame;
public class NewClass extends JComponent {
private Point inicioArrastre; private Point finArrastre; private ArrayList<Shape> lineas = new ArrayList<Shape>(); public NewClass() { super(); addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { // cuando se presiona el mouse inicioArrastre = new Point(e.getX(), e.getY()); repaint(); }
public void mouseReleased(MouseEvent e) { // cuando se deja de presionar el mouse finArrastre = new Point(e.getX(), e.getY()); Shape linea = crearLinea(inicioArrastre.x, inicioArrastre.y, finArrastre.x, finArrastre.y); lineas.add(linea); repaint(); } }); addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) { // cuando se esta arrastrando el mouse finArrastre = new Point(e.getX(), e.getY()); Shape linea = crearLinea(inicioArrastre.x, inicioArrastre.y, finArrastre.x, finArrastre.y); lineas.add(linea); inicioArrastre = new Point(finArrastre.x, finArrastre.y); repaint(); } }); }
public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.BLUE); for (Shape linea : lineas) { // dibuja todos las elipses g2.draw(linea); } }
private Line2D.Float crearLinea(int x1, int y1, int x2, int y2) { return new Line2D.Float(x1, y1, x2, y2); } public static void main(String[] a3d) { JFrame ventana = new JFrame("Dibujar"); ventana.setSize(800, 800); ventana.setLocationRelativeTo(null); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ventana.add(new NewClass()); ventana.setVisible(true);
}
}
Título: Re: Cambiar color al pintar (JComponent)
Publicado por: rub'n en 15 Mayo 2019, 00:48 am
* Linea 30 a 32, contiene el listener del JButton para abrir la paleta y obtener el color * Linea 64 se le setea el color obtenido al metodo g2.setColor(Color c)Acostumbrate a usar GeShipackage com.mycompany.mavenproject3; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Line2D; import java.util.ArrayList; import javax.swing.*; /* * @author */ private Point inicioArrastre ; private Point finArrastre ; private final ArrayList<Shape> lineas = new ArrayList<>(); public NewClass() { super(); /** * Listener del boton para abrir la paleta de colores */ jButton.addActionListener(e -> { }); public void mousePressed (MouseEvent e ) { // cuando se presiona el mouse inicioArrastre = new Point(e. getX(), e. getY()); repaint(); } public void mouseReleased (MouseEvent e ) { // cuando se deja de presionar el mouse finArrastre = new Point(e. getX(), e. getY()); Shape linea = crearLinea (inicioArrastre. x, inicioArrastre. y, finArrastre. x, finArrastre. y); lineas.add(linea); repaint(); } }); public void mouseDragged (MouseEvent e ) { // cuando se esta arrastrando el mouse finArrastre = new Point(e. getX(), e. getY()); Shape linea = crearLinea (inicioArrastre. x, inicioArrastre. y, finArrastre. x, finArrastre. y); lineas.add(linea); inicioArrastre = new Point(finArrastre. x, finArrastre. y); repaint(); } }); } @Override g2.setColor(this.color); for (Shape linea : lineas ) { // dibuja todos las elipses g2.draw(linea); } } private Line2D.Float crearLinea (int x1, int y1, int x2, int y2 ) { } public static void main (String[] a3d ) { try { ex.printStackTrace(); } ventana.setSize(800, 800); ventana.setLocationRelativeTo(null); ventana. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE); jButton.setContentAreaFilled(false); jPanel. add(Box. createVerticalStrut(20)); jPanel.add(new NewClass()); ventana.add(jPanel); ventana.setVisible(true); }).start(); } }
|