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

[SOLUCIONADO] Seleccionar color de una arraylist

Estas en el tema de Seleccionar color de una arraylist en el foro de Java en Foros del Web. Buenas, Estoy creando una lámina en cual un rectángulo quiero que seleccione el color aleatoriamente de una arraylist de colores personalizados. por favor, decirme que ...
  #1 (permalink)  
Antiguo 26/07/2018, 19:41
berseco
Invitado
 
Mensajes: n/a
Puntos:
Seleccionar color de una arraylist

Buenas, Estoy creando una lámina en cual un rectángulo quiero que seleccione el color aleatoriamente de una arraylist de colores personalizados. por favor, decirme que estoy haciendo mal.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package buscacolor;

import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;

/**
*
* @author pcx
*/
public class Lamina extends JPanel {
int i=0, f, e, c, j=0, num=1, numColor=6, colore;
double pos_x=50;
//public Rectangle2D cuadro[];

public ArrayList<Color> colores, lista;
int [] jugada;
Color blanco, azul, verde, celeste, rosa, rosaOscuro, amarillo, rojo, rojoClaro, naranja, negro, morado;
Random rnd= new Random();

public Lamina(){
blanco= new Color(255,255,255);
azul= new Color(0,0,125);
verde= new Color(0,128,0);
celeste= new Color(0,255,255);
rosa= new Color(255,0,255);
rosaOscuro= new Color(128,0,128);
amarillo= new Color(255,255,0);
rojo= new Color(255,0,0);
rojoClaro= new Color(255,192,203);
naranja= new Color(255,165,0);
blanco= new Color(0,0,0);
morado= new Color(84,84,168);
}
public void cargar() {
colores= new ArrayList<Color>();
colores.add(0, azul);
colores.add(1, verde);
colores.add(2,celeste);
colores.add(3, rosa);
colores.add(4, rosaOscuro);
colores.add(5, amarillo);
colores.add(6, rojo);
colores.add(7, rojoClaro);
colores.add(8, naranja);
colores.add(9, blanco);
colores.add(10, morado);
}

public void paintComponent(Graphics g) {


super.paintComponent(g);
Graphics2D g2= (Graphics2D) g;
numColor=4;
while(numColor!=0){
Rectangle2D cuadro= new Rectangle2D.Double(pos_x, 100, 250, 250);



j= (int) Math.round(Math.random()*5);

g2.setColor(colores.get(i));
g2.fill(cuadro);
g2.draw(cuadro);
// System.out.println(colores.toArray());
pos_x+= 350;
numColor--;
// lista.add(colores.get(j));
// colores.remove(j);

// jugada= new int[numColor];
}

/*
for(f=0; f<jugada.length; f++) {

j= rnd.nextInt(colores.length);

jugada[f]=j;
for(int c=0; c<f; c++) {

System.out.println("indice c " + c + " array c" + jugada[c] + " num aleatorio " + j );
if(jugada[f]== jugada[c]) {

j= rnd.nextInt(colores.length);
jugada[f]= j;
f=0;
}


}
System.out.println("indicee c " + c + " array c " + jugada[c] + " num aleatorio " + j );

Rectangle2D cuadro= new Rectangle2D.Double(pos_x, 70, 50, 50);


g2.setColor(new Color(hex(colores[jugada[f] ])));
g2.fill(cuadro);
g2.draw(cuadro);

System.out.println("Color " + g2.getBackground() );


pos_x+= 350;


*/
}
}


Grecias
  #2 (permalink)  
Antiguo 26/07/2018, 23:54
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Seleccionar color de una arraylist

j= (int) Math.round(Math.random()*5);

g2.setColor(colores.get(i));

teniendo en cuenta que un random va de 0 a 1 tendrías que tener en cuenta el número de elementos del array y sobre todo usar el int adecuado cuando estás obteniendo el color de la lista ya que i != j

Ah y usa Floor en vez de round porque los elementos del array van de 0 a n-1
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 27/07/2018, 06:37
berseco
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seleccionar color de una arraylist

Pero la arraylist ¿está hecha y declarada correctamente?.

Por favor, soy novato en java, darme más pistas.

Gracias
  #4 (permalink)  
Antiguo 27/07/2018, 16:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Seleccionar color de una arraylist

List<Color> colores= new ArrayList<Color>();
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 27/07/2018, 18:03
berseco
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seleccionar color de una arraylist

Me dice que la referencia List es ambigua
  #6 (permalink)  
Antiguo 28/07/2018, 15:16
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Seleccionar color de una arraylist

Eso es que tienes en los imports 2 clases List o dos paquetes que contengan la clase List.

por ejemplo java.awt.List y java.util.List

Puedes referenciarlo directamente

java.util.List<Color> colores= new ArrayList<Color>();
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 30/07/2018, 06:14
berseco
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seleccionar color de una arraylist

Buenas, he conseguido encontrar el fallo. Resulta que no invocaba
la función cargar() en la función paintComponent(Graphics g), y por lo tanto al poner g2.setColor(colores.get(i)); daba error por que en memoria no existía el ArrayList colores.

Gracias por todo

Etiquetas: arraylist, color, jpa
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 06:25.