¿Estás añadiendo elementos siempre en las mismas coordenadas? Si es así, te estará pintando n rectángulos uno encima de otro y sólo verás 1, ya que estás dibujando una y otra vez lo mismo.
Idem con tu bucle de 10 que pinta 5 rectangulos. Si dibujas los mismos 5 rectangulos 10 veces, verás 5 rectangulos.
Se bueno.[/QUOTE]
Hola buenas, Al momento de registrar coordenadas lo que ago es agregar un nuevo elemento a lista. La primera vez es así: en la clase lista:
Código Java:
Ver originalpublic void agregar_elemento(int x, int y, int a, int h){
Elemento nuevo = new Elemento();
nuevo.setX(x);
nuevo.setY(y);
nuevo.setA(a);
nuevo.setH(h);
if(cabecera==null){
cabecera = nuevo;
}
Por primer vez se registran las cordenadas: de la presentación:
Código Java:
Ver originalpublic static void registrar(){
int x, y, a, h;
x = 100;
y = 40;
a = 60;
h = 55;
obj.agregar_elemento(x, y, a, h);
System.
out.
println("Elemento agregado correctamente."); }
Con esos valores, la cordenada más importante es la X, en el segundo registro multiplico la variable X por 2 que se ve en la clase lista en el metodo registrar:
Código Java:
Ver originalif(cabecera==null){
cabecera = nuevo;
}else{
nuevo.setX(x*2);
Bueno con está coordena ya con otro valor el cuadrado se va a desplazar a la derecha ya tendria valor 200 a la coordenada Y no le muevo nada por que es la que mantiene todos en forma horizontal..
En el ciclo for si así es E TENIDO UN ERROR LÓGICO
en fin si ago esto:
y lo arreglo ya funciona el ciclo. Crea una variable x este su valor se le suma 100;
Código Java:
Ver original
super.paintComponent(nuevo); //llama al metodo paint.
this.
setBackground(Color.
WHITE); int x = 0;
for (int i = 0; i < 10; i++) {
x = x + 100;
nuevo.
setColor(Color.
RED); nuevo.fillRect(x, 90, 50, 60);
}
}
Con esto logro hacer que se dibujen los 100 cuadrados
[
] [
] [
] [
] [
] [
] [
] [
] [
] [
]
Ahora la solución que e planteado a sido ya no tomar el valor original que viene de la clase presentación de la cordenada X. e creado una variable llamada guarda que se inicia en 0 está a incrementar de 100 en 100. Además modifique el ingrese de datos comun que usaba ahora inserto asi solo para este caso. :D
Código Java:
Ver originalpublic void agregar_elemento(int x, int y, int a, int h){
Elemento nuevo = new Elemento();
if(cabecera==null){
guarda = 100;
nuevo.setX(guarda);
nuevo.setY(y);
nuevo.setA(a);
nuevo.setH(h);
cabecera = nuevo;
}else{
guarda = guarda + 100;
nuevo.setX(guarda);
nuevo.setY(y);
nuevo.setA(a);
nuevo.setH(h);
Elemento p = cabecera;
while(p.siguiente!=null){
p = p.siguiente;
}
p.siguiente = nuevo;
}
}
La variable guarda está creada al inicio de la clase por aquí
Código Java:
Ver originalpublic class Lista
extends JPanel{ Elemento cabecera;
static int guarda = 0;
public Lista(){
cabecera = null;
}
....................
Al final queda toda la clase lista.java así por el momento me falta agregar nombres a los elementos eso ya es facil.
Código Java:
Ver originalpackage listassimples2d_freddyalc;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Lista
extends JPanel{ Elemento cabecera;
static int guarda = 0;
public Lista(){
cabecera = null;
}
public void agregar_elemento(int x, int y, int a, int h){
Elemento nuevo = new Elemento();
if(cabecera==null){
guarda = 100;
nuevo.setX(guarda);
nuevo.setY(y);
nuevo.setA(a);
nuevo.setH(h);
cabecera = nuevo;
}else{
guarda = guarda + 100;
nuevo.setX(guarda);
nuevo.setY(y);
nuevo.setA(a);
nuevo.setH(h);
Elemento p = cabecera;
while(p.siguiente!=null){
p = p.siguiente;
}
p.siguiente = nuevo;
}
}
public void mostrar_Cordenadas(){
Elemento p = cabecera;
while(p!=null){
coordenadas += "x = "+ p.getX()+" y = "+ p.getY()+" ancho = "+p.getA()+" altura = "+p.getH()+"\n";
p = p.siguiente;
}
System.
out.
println(coordenadas
); }
super.paintComponent(nuevo); //llama al metodo paint.
this.
setBackground(Color.
WHITE); Elemento p = cabecera;
while(p!=null){
nuevo.
setColor(Color.
RED); nuevo.fillRect(p.getX(), p.getY(), p.getA(), p.getH());
p = p.siguiente;
}
}
}
La clase presentación agregue al menu la opcion de ver cordenadas.
queda así.
Código Java:
Ver originalpackage listassimples2d_freddyalc;
import java.awt.Color;
import javax.swing.JFrame;
import java.util.Scanner;
public class Presentacion {
static Scanner leer
= new Scanner
(System.
in); static Lista obj = new Lista();
public static int menu(){
int opc;
do{
System.
out.
println("---------------------- LISTAS MENU PRINCIPAL ----------------------"); System.
out.
println("Ingrese [1] uno para registrar un elemento"); System.
out.
println("Ingrese [2] para mostrar elementos."); System.
out.
println("Ingrese [3] para mostrar cordenadas."); System.
out.
println("Ingrese [4] para SALIR"); opc = leer.nextInt();
}while(opc<0 || opc>4);
return opc;
}
public static void registrar(){
int x, y, a, h;
x = 100;
y = 40;
a = 60;
h = 55;
obj.agregar_elemento(x, y, a, h);
System.
out.
println("Elemento agregado correctamente."); }
public static void mostrar(){
marco.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
obj.
setBackground(Color.
WHITE); marco.add(obj);
marco.setSize(1000, 500);
marco.setVisible(true);
// System.out.println(obj.mostrar_Elementos());
}
public static void mostrar_coordenadas(){
obj.mostrar_Cordenadas();
}
public static void main
(String[] args
) {
int opc;
do{
opc = menu();
switch(opc){
case 1:
registrar();
break;
case 2:
mostrar();
break;
case 3:
mostrar_coordenadas();
break;
}
}while(opc!=4);
}
}
aquí dejo una captura.
http://i61.tinypic.com/2s98xgy.png
Solo me queda agradecerte chuidiang. Además de hacerme ver los errores lógicos que e tenido.
Voy agregar nuevas cosas funciona muy bien