Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2014, 22:21
Avatar de freddy31DA
freddy31DA
 
Fecha de Ingreso: junio-2012
Mensajes: 84
Antigüedad: 11 años, 11 meses
Puntos: 2
Busqueda dibujar rectángulos con listas enlazadas simples

Hola comunidad, tengo un problemilla.
Como ya domino un poco las listas simples en java e estado insertando, borrando, editando, ordenando etc... Se me a ocurrido la idea de mostrar esos elementos en una interfaz grafica e estado dibujando en java 2D pero tengo inconvenientes ya que no me pinta nuevos rectángulos.

Cada vez que registro un elemento en la cordenada x se le multiplica por 2 ya que por defecto la puso en 100.
Dejo todo mi proyecto espero que me ayuden a representar las listas simples con java 2d. :

Lista.java
Código PHP:
package listassimples2d_freddyalc;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class 
Lista extends JPanel{
    
Elemento cabecera;    
    public 
Lista(){
        
cabecera null;
       }
                public 
void agregar_elemento(int xint yint aint h){
                    
Elemento nuevo = new Elemento();
                    
nuevo.setX(x);
                    
nuevo.setY(y);
                    
nuevo.setA(a);
                    
nuevo.setH(h);
                    if(
cabecera==null){
                        
cabecera nuevo;
                    }else{
                        
nuevo.setX(x*2);
                        
Elemento p cabecera;
                        while(
p.siguiente!=null){
                            
p.siguiente;
                        }
                        
p.siguiente nuevo;
                    }
                }
    
    
                    
    
        public 
void paint(Graphics nuevo){
                
                
                
                    
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.siguiente;
                    }
                    
                 
            }
               
 
        
        } 
La clase elemento:
Código PHP:
package listassimples2d_freddyalc;


public class 
Elemento {
    
    
int x,y,a,h;
    
Elemento siguiente;
    
        public 
Elemento(){
           
            
siguiente null;
        }

    public 
Elemento(int xint yint aint h) {
        
        
this.x;
        
this.y;
        
this.a;
        
this.h;
    }

    public 
int getX() {
        return 
x;
    }

    public 
void setX(int x) {
        
this.x;
    }

    public 
int getY() {
        return 
y;
    }

    public 
void setY(int y) {
        
this.y;
    }

    public 
int getA() {
        return 
a;
    }

    public 
void setA(int a) {
        
this.a;
    }

    public 
int getH() {
        return 
h;
    }

    public 
void setH(int h) {
        
this.h;
    }

        
        
        
    

LA CLASE PRESENTACION

Código PHP:


package 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 SALIR");
           
System.out.print("\n >> ");
           
opc leer.nextInt();
           
            }while(
opc<|| opc>3);
           return 
opc;
        }
        
        public static 
void registrar(){
           
            
int xyah;
            
100;
            
40;
            
60;
            
55;
            
obj.agregar_elemento(xyah);
            
System.out.println("Elemento agregado correctamente.");
        }
        public static 
void mostrar(){
              
JFrame marco = new JFrame("Listas representación Grafica");  
              
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              
              
Lista dibujar = new Lista();
              
dibujar.setBackground(Color.WHITE);
              
marco.add(dibujar);
              
marco.setSize(1000500);
              
marco.setVisible(true);
//            System.out.println(obj.mostrar_Elementos());
        
}
   
    public static 
void main(String[] args) {
       
           
int opc;
           do{
               
opc menu();
               
               switch(
opc){
                   case 
1:
                       
                       
registrar();
                       
                       break;
                       
                   case 
2:
                       
mostrar();
                       
                       break;
                       
                   case 
3:System.exit(0);
               
               }
           
           }while(
opc!=3);
        
    }


Si el método public void paint(....)
{.......}
tuviera solo esto dentro:

Código Java:
Ver original
  1. public void paint(Graphics nuevo){
  2.                
  3.                
  4.                
  5.                     super.paintComponent(nuevo); //llama al metodo paint.
  6.                     this.setBackground(Color.WHITE);
  7.                    
  8.                              nuevo.setColor(Color.RED);
  9.                              nuevo.fillRect(50, 90, 50, 60);
  10.                            
  11.                    
  12.        
  13.                  
  14.  
  15.                  
  16.             }

ME VA A DIBUJAR CORRECTAMENTE UN CUADRADO lo que quiero hacer arriba hacerlo dinámico. como ven agrego nuevos elementos en la clase presentación
espero que se entienda mi idea.. Por favor :(
Espero que me ayuden.
Gracias

Última edición por freddy31DA; 25/06/2014 a las 22:26 Razón: detalle