import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@Documented()
@Target( ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
@interface Forma_alternativa_de_guardar_vector_en_ArrayList{
public String descripcion() default "Permite demostrar que hay una forma alternativa de guardar vectores en ArrayList";
}
/**
* Muestra la forma alterna de guardar un vector en un ArrayList.
* @author Rafael Angel Montero Fernandez.
*/
@Forma_alternativa_de_guardar_vector_en_ArrayList
class Guardar_vector_forma_dos{
/**
* Facilita la imprecion de mensajes en pantalla.
* @param datos Cualquier texto.
*/
private void msj(String datos){
System.out.println(datos);
}
/**
* Carga los datos de ejemplo en los diferentes objetos.
*/
public void cargar_datos(){
Modelo una_persona=new Modelo("Rafael");
Rs_Vector un_rs=new Rs_Vector();
un_rs.add(una_persona, 0);
un_rs.setIdentificador(1);
una_persona=new Modelo("Juana de Arco");
un_rs.add(una_persona, 1);
rs.add(un_rs);
un_rs=new Rs_Vector();
una_persona=new Modelo("Lozen");
un_rs.add(una_persona, 1);
una_persona=new Modelo("Grace OMalen");
un_rs.add(una_persona, 0);
un_rs.setIdentificador(2);
rs.add(un_rs);
}
/**
* Carga los datos en JTextArea para ser mostrados en un form.
* Pero por si acaso tambien, imprime los datos de reporte en pantalla.
* @return Retorna una instancia de JTextArea cargada con datos.
*/
private JTextArea mostrar_registros(){
this.cargar_datos();
JTextArea jtaReporte=new JTextArea();
jtaReporte.setBounds(0,0,300,200);
for(int f0=0; f0<=rs.size()-1; f0++){
msj("f0= " + f0);
msj(rs.get(f0).toString());
jtaReporte.setText(jtaReporte.getText() + "\n" +rs.get(f0).toString() );
}
// JOptionPane.showMessageDialog(null,jtaReporte);
return jtaReporte;
}
/**
* Llama a los metodos internos necesarios, crea la instancia de un JFrame.
* Lo muestra con un JTextArea con datos.
* Muestra los resultados de las pruebas.
*/
public void probar(){
JFrame FRM_Reporte=new JFrame("Reporte");
FRM_Reporte.setBounds(100, 50, 300, 200);
JScrollPane jsp=new JScrollPane(mostrar_registros());
jsp.setBounds(0,0,300,200);
FRM_Reporte.add(jsp);
FRM_Reporte.setVisible(true);
FRM_Reporte.setResizable(false);
FRM_Reporte.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/**
* Este ArrayList permite guardar un class Rs_Vector, el cual tiene un vector de 2 casillas en su interior.
*/
private ArrayList<Rs_Vector> rs=new ArrayList<Rs_Vector>();
/**
* Puede guardar dos objetos a la vez.
*/
public class Rs_Vector{
/**
* Instancia u objeto interno de Modelo.
*/
private Modelo persona[]=new Modelo[2];
/**
**/
private int identificador/*=valor*/;
/**
**/
public void setIdentificador(int nuevo_identificador)
{
identificador=nuevo_identificador;
}
/**
**/
public int getIdentificador(){
return identificador;
}
/**
* Agrega datos al ArrayList.
* @param una_persona Un objeto o instanacia Modelo con datos.
* @param id Un valor cero o 1.
*/
public void add(Modelo una_persona, int id){
if((id>persona.length-1)||(id<0)){
JOptionPane.showMessageDialog(null, "El indice indicado esta fuera de los limites del vector.");
}else{
persona[id]=una_persona;
msj(persona[id].getNombre());
una_persona=null;//Se anula para evitar.
}
}
/**
*
* @return Retorna el registro de las dos personas.
*/
@Override
public String toString(){
// msj("Identificador= " + this.getIdentificador() + ". Persona 1: " + persona[0].getNombre() + "; persona 2: " + persona[1].getNombre());
return "Identificador= " + this.getIdentificador() + ". Persona 1: " + persona[0].getNombre() + "; persona 2: " + persona[1].getNombre();
}
}
/**
* Modelo a usarse en el ejemplo.
*/
public class Modelo{
public Modelo(String nuevo_Nombre){
setNombre(nuevo_Nombre);
}
public Modelo(){}
/**
nombre esta bien.
**/
private String Nombre/*=valor*/;
/**
nombre esta bien.
**/
public void setNombre(String nuevo_Nombre)
{
Nombre=nuevo_Nombre;
}
/**
nombre esta bien.
**/
public String getNombre(){
return Nombre;
}
@Override
public String toString(){
return this.getNombre();
}
}//Fin del class
}