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 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;
}else{
nuevo.setX(x*2);
Elemento p = cabecera;
while(p.siguiente!=null){
p = 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 = p.siguiente;
}
}
}
Código PHP:
package listassimples2d_freddyalc;
public class Elemento {
int x,y,a,h;
Elemento siguiente;
public Elemento(){
siguiente = null;
}
public Elemento(int x, int y, int a, int h) {
this.x = x;
this.y = y;
this.a = a;
this.h = h;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
}
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<0 || opc>3);
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(){
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(1000, 500);
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
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