Sunteți pe pagina 1din 95

ALGORTMICA Y PROGRAMACIN 2 (APO 2)

NIVEL 9
Mario Jos Villamizar Cano
mj.villamizar24@uniandes.edu.co
Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
Grupo de Tecnologas de Informacin y Comunicacin (COMIT)
Departamento de Ingeniera de Sistemas y Computacin
Universidad de los Andes, Bogot D.C., Colombia








mjvc007@hotmail.com




http://twitter.com/mariocloud




http://linkedin.com/in/mariojosevillamizarcano


REDES SOCIALES

NIVEL 9

Caso de estudio 1 Una Central de Pacientes

Referencias y ciclos de vida de los objetos

Estructuras lineales enlazadas

Localizacin de elementos y recorridos

Supresin de elementos

Insercin de elementos

Patrones de algoritmo

Nuevos componentes grficos (JRadioButton, ButtonGroup, JDialog)

NIVEL 9 ESTRUCTURAS LINEALES ENLAZADAS

NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 2: Aerolnea
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 2: Aerolnea
NIVEL 9
HOJAS DE TRABAJO
Hoja de trabajo 1: Agenda
NIVEL 9
HOJAS DE TRABAJO
Hoja de trabajo 2: Cadenas de ADN
NIVEL 9
HOJAS DE TRABAJO
Hoja de trabajo 3: Cupi E-Mart
NIVEL 9
HOJAS DE TRABAJO
Hoja de trabajo 3: Cupi E-Mart
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Modelo del Mundo con un Vector o ArrayList
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Representacin con un Vector o ArrayList
NIVEL 9
:CentralPacientes
:Paciente
codigo=12
nombre=Maria
0
pacientes =
:Paciente
codigo=22
nombre=Juan
1
:Paciente
codigo=50
nombre=Mary
2
:Paciente
codigo=100
nombre=Lucas
n

CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES


Modelo del Mundo con un Vector o ArrayList
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Representacin con una LISTA ENLAZADA SIMPLE
NIVEL 9

Solo se tiene una referencia al primer elemento de la lista.

Cada elemento de la lista tiene una referencia al siguiente-

El ltimo elemento de la lista tiene como referencia null es su atributo siguiente.

El primer elemento de la lista generalmente se le denomina cabeza.

:CentralPacientes
:Paciente
codigo=12
nombre=Maria
primero
:Paciente
codigo=22
nombre=Juan
:Paciente
codigo=50
nombre=Mary
:Paciente
codigo=100
nombre=Lucas n
u
l
l
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Modelo del Mundo con una LISTA ENLAZADA SIMPLE
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Modelo de la Interfaz
NIVEL 9
CASO DE ESTUDIO 1 UNA CENTRAL DE PACIENTES
Modelo de las Pruebas
NIVEL 9
LISTAS ENLAZADAS SIMPLES

Es una estructura de datos utilizada en problemas en los cuales es
importante mantener ordenados un conjunto de valores y objetos.

Son muy eficientes para la insercin y eliminacin de elementos.

Los desplazamientos en memoria para el caso de los arreglos es
necesario hacerlo a mano.

Los desplazamientos en memoria para el caso de los vectores o
ArrayList los hace automticamente Java, sin embargo, no lo hace de
manera eficiente.

Utilizadas principalmente en programas en los que hay muchas
inserciones y eliminaciones de elementos, as como en programas en los
cuales dichos elementos deben mantener o cumplir con alguna regla de
ordenamiento.
NIVEL 9
DECLARACIN DE UNA LISTA ENLAZADA SIMPLE
NIVEL 9
La definicin de una lista enlazada simple


public class CentralPacientes
{

//----------------------------------------------------------------
// Atributos
//----------------------------------------------------------------
/**
* Primer paciente de la lista
*/
private Paciente primero;

}
INICIALIZACIN DE UNA LISTA ENLAZADA SIMPLE
NIVEL 9
La inicializacin de una lista enlazada simple


public class CentralPacientes
{

public CentralPacientes( )
{

primero = null;
numPacientes = 0;

}

}
Inicialmente la lista no
tiene ningn paciente,
por lo cual primero se
inicializa en null
DECLARACIN DE LOS ELEMENTOS DE LISTA ENLAZADA SIMPLE
NIVEL 9
La inicializacin de una lista enlazada simple

public class Paciente
{
//---------------------------------------------
// Atributos
//---------------------------------------------
private int codigo;
private String nombre;
private String clinica;
private String informacionMedica;
private int sexo;
/**
* Referencia al siguiente elemento
*/
private Paciente siguiente;

}
Cada elemento de la
lista puede tener una
referencia al siguiente.
CREACIN DE UN NUEVO PACIENTE
NIVEL 9
La creacin de un objeto de la clase Paciente

public class Paciente
{
//---------------------------------------------
// Mtodos
//---------------------------------------------
public Paciente( int cod, String nom, String clin, String infoMed, int sex )
{
codigo = cod;
nombre = nom;
clinica = clin;
informacionMedica = infoMed;
sexo = sex;
siguiente = null;
}
}
Al crear un objeto el
atributo siguiente
referencia a null.
OPERACIONES SOBRE LISTAS ENLAZADAS SIMPLES
NIVEL 9
Bsquedas y recorridos

Calcular el nmero de pacientes de sexo masculino.
Buscar a un paciente dado su cdigo.
Buscar el nmero de pacientes asociados con una clnica.
Buscar a un paciente dado su nombre.


Insercin

Insertar un nuevo paciente (al inicio, al final, despus de otro paciente, antes de
otro paciente).


Eliminacin

Eliminar un paciente dado su cdigo.

BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Recorrido total

Definir el mtodo dar nmero de pacientes en la clase CentralPacientes:


public int darTotalPacientes( )
{
Paciente actual = primero;
int numero = 0;

while( actual != null )
{
numero++;
actual = actual.darSiguiente( );
}
return numero;
}


El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista.
Se efectan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Recorrido total

Definir el mtodo dar nmero de mujeres en la clase CentralPacientes:

public int darNumeroMujeres ( )
{
Paciente actual = primero;
int numero = 0;

while( actual != null )
{
if(actual.darSexo( )==Paciente.MUJER)
numero++;
actual = actual.darSiguiente( );
}
return numero;
}


El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista.
Se efectan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Recorrido parcial

Definir el mtodo hay un hombre en la clase CentralPacientes:

public boolean hayUnHombre ( )
{
Paciente actual = primero;
boolean termino= false;

while( actual != null && !termino)
{
if(actual.darSexo( )==Paciente.HOMBRE)
termino=true;
actual = actual.darSiguiente( );
}
return termino;
}


El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista y no se haya cumplido una
condicin.
Se efectan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas

Definir el mtodo dar sexo menor nmero de pacientes en la clase
CentralPacientes. Este mtodo retorna el sexo que tiene el menor nmero de
pacientes, es decir las constantes HOMBRE o MUJER, en caso de haber
empate el mtodo debe retornar -1.

public int darSexoMenorNumeroPacientes ( )
{









}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas

Definir el mtodo dar paciente mayor cdigo en la clase CentralPacientes:

public Paciente darPacienteMayorCodigo ( )
{












}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas

Definir el mtodo dar ltimo paciente en la clase CentralPacientes. Este mtodo
retorna null en caso de que no hayan pacientes.

public Paciente darUltimoPaciente( )
{











}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas

Definir el mtodo dar ltima mujer de la lista en la clase CentralPacientes. Este
mtodo retorna null en caso de que no haya una mujer en la lista.

public Paciente darUltimaMujer ( )
{











}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas

Definir el mtodo retornar pacientes en ArrayList, en la clase CentralPacientes.

public ArrayList retornarPacientesEnArrayList ( )
{












}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas (DOBLE RECORRIDO)

Definir el mtodo hay dos pacientes con el mismo nombre en la clase
CentralPacientes.

public boolean hayDosPacientesConElMismoNombre ( )
{











}


BSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Ejercicio de recorrido y bsquedas (DOBLE RECORRIDO)

Definir el mtodo hay dos pacientes de la misma clnica en la clase
CentralPacientes.

public boolean hayDosPacientesDeLaMismaClinica ( )
{











}


PATRN DE RECORRIDO TOTAL
NIVEL 9

Consiste en pararse una vez en cada uno de los elementos de la lista.


Nodo actual = primero;
while( actual != null )
{



actual = actual.darSiguiente( );
}


PATRN DE RECORRIDO PARCIAL PARA LOCALIZAR EL TIMO
ELEMENTO
NIVEL 9
Consiste en localizar el ltimo elemento de la lista.

if ( primero != null )
{
Nodo actual = primero;
while( actual.darSiguiente() != null )
{



actual = actual.darSiguiente( );
}

}


PATRN DE RECORRIDO PARCIAL HASTA QUE UN ELEMENTO
CUMPLA UNA CONDICIN
NIVEL 9
Consiste en verificar que una condicin se cumple sobre por lo menos
un elemento de la lista.

Nodo actual = primero;
boolean termino = false;
while( actual != null && !termino )
{
..
actual = actual.darSiguiente( );
}




PATRN DE RECORRIDO PARCIAL HASTA QUE UNA CONDICIN SE
CUMPLA SOBRE EL SIGUIENTE ELEMENTO
NIVEL 9
Consiste en verificar que una condicin se cumple sobre el siguiente
elemento de por lo menos uno de los elementos de la lista.

Nodo actual = primero;
Nodo anterior = null;
boolean termino = false;
while( actual != null && !termino )
{
..
anterior = actual;
actual = actual.darSiguiente( );
}




PREGUNTAS
NIVEL 9
HOJA DE TRABAJO
NIVEL 9
INSERCIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos


Insertar un elemento al inicio de la lista.



Insertar un elemento al final de la lista.



Insertar un elemento despus de otro elemento.



Insertar un elemento antes de otro elemento.






INSERCIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos AL INICIO DE LA LISTA

Definir el mtodo agregar paciente al comienzo, en la clase CentralPacientes:

public void agregarPacienteAlComienzo( Paciente pac )
{
if( primero == null )
{
primero = pac;
}
else
{
pac.cambiarSiguiente( primero );
primero = pac;
}
numPacientes++;
}

Se supone que el paciente
ya se cre normalmente y
que su referencia a siguiente
es null.
Se crea la cabeza si no
existe
Se realiza la adicin antes
del paciente que est al
inicio de la lista
INSERCIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos AL FINAL DE LA LISTA

Definir el mtodo agregar paciente al final, en la clase CentralPacientes:

public void agregarPacienteAlFinal( Paciente pac )
{
if( primero == null )
{
primero = pac;
}
else
{
Paciente p = localizarUltimo( );
p.insertarDespues( pac );
}
numPacientes++;
}

Se supone que el paciente
ya se cre normalmente y
que su referencia a siguiente
es null.
Se crea la cabeza si no
existe
Se realiza la adicin
despus del paciente que
est al final de la lista
INSERCIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos INSERTAR DESPUS DE OTRO
ELEMENTO

Definir el mtodo agregar paciente despus de otro, en la clase
CentralPacientes:

public void agregarPacienteDespuesDe( int cod, Paciente pac ) throws
NoExisteException
{


Paciente anterior = localizar( cod );
if( anterior == null )
throw new NoExisteException( cod );
else
anterior.insertarDespues( pac );
numPacientes++;

}
Se supone que el paciente
ya se cre normalmente y
que su referencia a siguiente
es null.
Identificador del
elemento anterior
Se localiza el paciente
anterior
Se adiciona el nuevo
paciente despus del
anterior
INSERCIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos INSERTAR ANTES DE OTRO
ELEMENTO

Definir el mtodo agregar paciente antes de otro, en la clase CentralPacientes:

public void agregarPacienteAntesDe( int cod, Paciente pac ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
pac.cambiarSiguiente( primero );
primero = pac;
}
else
{
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.insertarDespues( pac );
}
numPacientes++;
}
ELIMINACIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos ELIMINAR UN ELEMENTO DE LA
LISTA

Definir el mtodo eliminar paciente, en la clase CentralPacientes:

public void eliminarPaciente( int cod ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
primero = primero.darSiguiente( ); // El paciente es el primero de la lista
}
else
{
// El paciente es un elemento intermedio de la lista
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.desconectarSiguiente( );
}
numPacientes--;
}
ELIMINACIN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9

Problemas de insercin tpicos ELIMINAR UN ELEMENTO DE LA
LISTA

Definir el mtodo eliminar paciente, en la clase CentralPacientes:

public void eliminarPaciente( int cod ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
primero = primero.darSiguiente( ); // El paciente es el primero de la lista
}
else
{
// El paciente es un elemento intermedio de la lista
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.desconectarSiguiente( );
}
numPacientes--;
}
INTERFAZ PRINCIPAL
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
COMPONENTE JDialog
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
Dilogos (JDialog)
Mtodos

setSize(ancho, alto)
setResizable(cambiable)
setTitle(titulo)
setDefaultCloseOperation(EXIT_
ON_CLOSE)
setVisible(esVisible)
add(componente)

Puede ser modal o no modal.

Mtodo setLayout( ) del
contenedor grfico.

Se aplican los tipos de layout
BorderLayout y GridLayout igual
a un JFrame.
NIVEL 9
DIAGRAMA DE CLASES CON JDialog
Modelo de la Interfaz
NIVEL 9
Cada JDialog tiene una referencia
a la interfaz principal.
Las lneas punteadas indican
dependencias (no son atributos).
EJEMPLO DE CREACIN DE UN JDialog
NIVEL 9
Cada JDialog tiene una referencia a la interfaz principal.
COMO ABRIR UN JDialog DESDE LA INTERFAZ
NIVEL 9
Las lneas punteadas indican dependencias (no son atributos).
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
Al panel se adicionan los JRadioButton, NO el ButtonGroup
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
PREGUNTAS
NIVEL 9
HOJA DE TRABAJO
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 2: Aerolnea
NIVEL 9
CASOS DE ESTUDIO
Caso de estudio 2: Aerolnea
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Requerimientos funcionales.
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Modelo del Mundo
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Modelo de la Interfaz
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Modelo de las Pruebas
NIVEL 9
CASO DE ESTUDIO 2 AEROLNEA
Representacin con una Lista Doblemente Enlazada
NIVEL 9
:Ciudad
:Vuelo
vuelo1
:Vuelo :Vuelo :Vuelo
n
u
l
l
codigo=30
null
codigo=80 codigo=50 codigo=100
OPERACIONES SOBRE LISTAS ENLAZADAS DOBLES
NIVEL 9
Bsquedas y recorridos (Similar a como se hace en la listas simples)

Calcular el nmero de vuelos que tienen por lo menos una silla disponible.
Buscar a un vuelo dado su cdigo.
Buscar si un usuario tiene una reserva en un vuelo.


Insercin

Insertar un nuevo vuelo (al inicio, al final, despus de otro vuelo, antes de otro
vuelo).


Eliminacin

Eliminar un vuelo dado su cdigo.

ARREGLOS DE CONSTANTES
NIVEL 9
MANEJO DE FECHAS Y FORMATOS
NIVEL 9
NUEVOS DISTRIBUIDORES GRFICOS
NIVEL 9




Distribuidor secuencial - FlowLayout





Distribuidor GridBagLayout


Distribuidor secuencial - FlowLayout
NIVEL 9

Sita todos los componentes que se encuentran dentro del contenedor
grfico, uno despus de otro de izquierda a derecha.




Tiene en cuenta el orden de llegada y respeta el tamao preferido que tienen
establecidos cada uno de los componentes grficos.




Si se termina el espacio en una fila, el distribuidor comienza a usar la
siguiente.






Distribuidor secuencial - FlowLayout
NIVEL 9
Distribuidor secuencial - FlowLayout
NIVEL 9
Distribuidor GridBagLayout
NIVEL 9
Distribuidor muy flexible que permite crear interfaces grficas de usuario con
una estructura profesional.

Utiliza una malla dinmica en la que cada componente puede utilizar una o
ms celdas.

Implementado por dos clases en Java:

GridBagLayout: El distribuidor
GridBagConstraints: Describe las caractersticas (posicin, tamao, forma de
adaptarse a los cambios de tamao, etc.

En el mtodo add para adicionar un nuevo componente al distribuidor, se
debe pasar como parmetro una instancia de la clase GridBagConstraints.

Se vern las principales caractersticas de este distribuidor. Para una
documentacin ms completa se recomienda consultar la documentacin de las
clases GridBagLayout y GridBagConstraints.




Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.

gridx: Coordenada X de la celda de la malla del distribuidor donde comienza el
componente.



0 1 2
Coordenada X
0
1
2
Coordenada Y
Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.


gridy: Coordenada Y de la celda de la malla del distribuidor donde comienza el
componente.



gridwitdh: Nmero de casillas que va a ocupar el componente en la direccin X.




gridheigh: Nmero de casillas que va a ocupar el componente en la direccin Y.









Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.

fill: Usado cuando el espacio reservado para el componente es mayor que el
espacio que el componente necesita. Puede tomar los siguientes valores:

GridBagConstraints.NONE (valor por defecto y corresponde a no hacer nada).

GridBagConstraints.HORIZONTAL (cambia el tamao del componente en la
direccin horizontal).

GridBagConstraints.VERTICAL (cambia el tamao del componente en la
direccin vertical).

GridBagConstraints.BOTH (hace cambios en la dos dimensiones para ocupar
todo el espacio disponible en el distribuidor).








Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.



weightx: Define la manera como se va a distribuir el espacio extra en la
dimensin X. Utilizado principalmente cuando se cambie el tamao del
contenedor grfico.



weighty: Define la manera como se va a distribuir el espacio extra en la
dimensin Y. Utilizado principalmente cuando se cambie el tamao del
contenedor grfico.




Ejemplo con GridBagLayout
NIVEL 9
Ejemplo con GridBagLayout
NIVEL 9
Ejemplo con GridBagLayout
NIVEL 9
Ejemplo con GridBagLayout
NIVEL 9
Ejemplo con GridBagLayout
NIVEL 9
Ejemplo con GridBagLayout
NIVEL 9
PREGUNTAS
NIVEL 9
HOJA DE TRABAJO
NIVEL 9

S-ar putea să vă placă și