Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Agregar un color del tipo predefinido a la clase Color

Estas en el tema de Agregar un color del tipo predefinido a la clase Color en el foro de Java en Foros del Web. Como podría agregar un nuevo color a la clase Color de tal manera que se pudiera escribir como un color ya predefinido de la clase. ...
  #1 (permalink)  
Antiguo 15/10/2015, 05:29
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 2 meses
Puntos: 1
Agregar un color del tipo predefinido a la clase Color

Como podría agregar un nuevo color a la clase Color de tal manera que se pudiera escribir como un color ya predefinido de la clase.
Por ejemplo uso un color rosa lo escribo g.setColor(Color.pink) porque pink ya esta predefinido. Quiero predefinir un nuevo color con diferente tono que se llama Rosa y pueda escribirlo como g.setColor(Color.rosa)

Código:
g.setColor(Color.pink);

Color colorRosa=new Color(255, 175, 175);
g.setColor(colorRosa);
Se me ocurre es hacer esto, pero me interesa mas cambiar el color como Color.rosa en vez de colorRosa.
  #2 (permalink)  
Antiguo 15/10/2015, 05:47
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Agregar un color del tipo predefinido a la clase Color

No puedes extender el enumerado de colores, pero si puedes crear un nuevo enumerado propio de colores. Un ejemplo sería el que proponen aquí.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 15/10/2015, 06:13
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 7 meses
Puntos: 182
Respuesta: Agregar un color del tipo predefinido a la clase Color

Buenas,

En realidad java.awt.Color no es un enum, sino una clase, por lo que podemos extenderla facilmente:

Código Java:
Ver original
  1. public class ColorEx extends Color {
  2.  
  3.     public final static Color rosa = new Color(255, 175, 175);
  4.  
  5.     public ColorEx(int r, int g, int b) {
  6.         super(r, g, b);
  7.     }
  8. }

A partir de ese momento puedes utilizar siempre ColorEx:

Código Java:
Ver original
  1. g.setColor(ColorEx.pink);
  2. g.setColor(ColorEx.rosa);

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #4 (permalink)  
Antiguo 15/10/2015, 07:57
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 2 meses
Puntos: 1
Mensaje Respuesta: Agregar un color del tipo predefinido a la clase Color

He probado como public static class para usarlo en el mismo fichero que el método main()

Código:
public class Programa {

    public static class ColorEx extends Color {
      
        public  static final Color rosa = new Color(255, 175, 175);
          
        public ColorEx(int r, int g, int b) {
            super(r, g, b);
	}

    }

    public static void main(String[] args)  {
        
        ...... // código

        g.setColor(ColorEx.pink);
        g.setColor(ColorEx.rosa);

        ..... // Mas código.
   
     }
}
Funciona perfecto, aunque me hubiera gustado mas añadir un atributo con nombre rosa a la clase Color en vez de extenderla a otra clase.

Haber si alguien da alguna idea mas y sino lo doy como solucionado.

Última edición por loganbdn; 15/10/2015 a las 09:10
  #5 (permalink)  
Antiguo 15/10/2015, 09:43
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 7 meses
Puntos: 182
Respuesta: Agregar un color del tipo predefinido a la clase Color

Buenas,

Como te explique aqui: http://www.forosdelweb.com/f45/agreg...ics2d-1139397/

Java implementa un modelo de objetos mucho mas estricto que javascript, que no permite modificar alegremente la plantilla de una clase existente. Es un principio de diseno importante llamado open/closed principe: las clases deben estar abiertas a la extension y cerradas a su modificacion.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 16/10/2015, 03:32
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Agregar un color del tipo predefinido a la clase Color

Ok gracias

Etiquetas: clase, color, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:56.