elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Cambiar color al pintar (JComponent)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar color al pintar (JComponent)  (Leído 2,337 veces)
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Cambiar color al pintar (JComponent)
« 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!

Código:
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);
       

    }

   

}


« Última modificación: 13 Mayo 2019, 02:57 am por estudianteuv » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Cambiar color al pintar (JComponent)
« Respuesta #1 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 GeShi

Código
  1. package com.mycompany.mavenproject3;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseMotionAdapter;
  7. import java.awt.geom.Line2D;
  8. import java.util.ArrayList;
  9. import javax.swing.*;
  10.  
  11.  
  12. /*
  13.  * @author
  14.  */
  15. public class NewClass extends JComponent  {
  16.  
  17.    private Point inicioArrastre;
  18.    private Point finArrastre;
  19.    private final ArrayList<Shape> lineas = new ArrayList<>();
  20.    private static JButton jButton = new JButton("Paleta de colores");
  21.    private Color color;
  22.  
  23.  
  24.    public NewClass() {
  25.        super();
  26.  
  27.        /**
  28.          * Listener del boton para abrir la paleta de colores
  29.          */
  30.        jButton.addActionListener(e -> {
  31.            this.color = JColorChooser.showDialog(null,"",Color.LIGHT_GRAY);
  32.        });
  33.  
  34.        addMouseListener(new MouseAdapter() {
  35.  
  36.            public void mousePressed(MouseEvent e) { // cuando se presiona el mouse
  37.                inicioArrastre = new Point(e.getX(), e.getY());
  38.                repaint();
  39.            }
  40.  
  41.            public void mouseReleased(MouseEvent e) { // cuando se deja de presionar el mouse
  42.                finArrastre = new Point(e.getX(), e.getY());
  43.                Shape linea = crearLinea(inicioArrastre.x, inicioArrastre.y, finArrastre.x, finArrastre.y);
  44.                lineas.add(linea);
  45.                repaint();
  46.            }
  47.        });
  48.        addMouseMotionListener(new MouseMotionAdapter() {
  49.  
  50.            public void mouseDragged(MouseEvent e) { // cuando se esta arrastrando el mouse
  51.                finArrastre = new Point(e.getX(), e.getY());
  52.                Shape linea = crearLinea(inicioArrastre.x, inicioArrastre.y, finArrastre.x, finArrastre.y);
  53.                lineas.add(linea);
  54.                inicioArrastre = new Point(finArrastre.x, finArrastre.y);
  55.                repaint();
  56.            }
  57.        });
  58.  
  59.    }
  60.  
  61.    @Override
  62.    public void paint(Graphics g) {
  63.        Graphics2D g2 = (Graphics2D) g;
  64.        g2.setColor(this.color);
  65.        for (Shape linea : lineas) { // dibuja todos las elipses
  66.            g2.draw(linea);
  67.        }
  68.    }
  69.  
  70.    private Line2D.Float crearLinea(int x1, int y1, int x2, int y2) {
  71.        return new Line2D.Float(x1, y1, x2, y2);
  72.    }
  73.  
  74.    public static void main(String[] a3d) {
  75.  
  76.        try {
  77.            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  78.        } catch (Exception ex) {
  79.            ex.printStackTrace();
  80.        }
  81.        new Thread(() -> {
  82.            final JFrame ventana = new JFrame("Dibujar");
  83.            final JPanel jPanel = new JPanel();
  84.            jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS));
  85.            jPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
  86.            ventana.setSize(800, 800);
  87.            ventana.setLocationRelativeTo(null);
  88.            ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  89.  
  90.            final JPanel panelBoton = new JPanel();
  91.            panelBoton.setLayout(new BoxLayout(panelBoton,BoxLayout.X_AXIS));
  92.            jButton.setContentAreaFilled(false);
  93.  
  94.            panelBoton.add(jButton,BorderLayout.EAST);
  95.            jPanel.add(panelBoton,BorderLayout.NORTH);
  96.            jPanel.add(Box.createVerticalStrut(20));
  97.            jPanel.add(new NewClass());
  98.            ventana.add(jPanel);
  99.            ventana.setVisible(true);
  100.        }).start();
  101.    }
  102. }


« Última modificación: 15 Mayo 2019, 02:53 am por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar color
Diseño Gráfico
alkan 4 4,307 Último mensaje 4 Enero 2006, 20:26 pm
por alkan
Cambiar color de ojos (pro) « 1 2 »
Diseño Gráfico
Azielito 12 7,057 Último mensaje 22 Julio 2007, 21:44 pm
por Lauta
[c] Cambiar de color?
Programación C/C++
Dacan 7 20,866 Último mensaje 19 Marzo 2013, 06:41 am
por MessageBoxA
cambiar el color
Desarrollo Web
bengy 0 1,891 Último mensaje 28 Octubre 2016, 00:56 am
por bengy
Cambiar color c++
Programación C/C++
Pool9 0 1,780 Último mensaje 3 Mayo 2018, 05:35 am
por Pool9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines