Buenas,
Tienes algún error y te voy a hacer alguna sugerencia.
El problema lo tienes con el layout. Cada componente en Java que es contenedor de otros componentes tienen lo que se llama el layout, es decir, la forma en que se van a mostrar los elementos que se añadan al componente. El layout por defecto es null (no tiene layout), es decir, tienes que especificar concretamente donde quieres que aparezcan cada uno de los componentes (con el método setBounds, por ejemplo). Es por esto que te aparece sólo el último elemento que añades. En realidad, están todos visibles, pero el último de ellos está encima de todos los demás (están todos en la misma posición).
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vector;
import java.awt.Container;
import java.awt.FlowLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
class pick {
public JLabel etiquetas
(int tipo
) { }
@Override
return "$$$$$";
}
}
class Facturas extends pick {
@Override
return "facturas";
}
@Override
public JLabel etiquetas
(int tipo
) {
switch (tipo) {
///1 : Facturas Comerciales.
///2 : Facturas Clientes Individuales.
///3 : Facturas Con RNC.
///4 : Facturas Sencillas.
///5 : $moneda(depende de una clase de moneda).
case 1:
etiquetas.setText("Facturas Comerciales\n");
break;
case 2:
etiquetas.setText("Clientes Individuales \n");
break;
case 3:
etiquetas.setText("Facturas Con RNC\n");
break;
case 4:
etiquetas.setText("Facturas Sencillas \n");
break;
}
return etiquetas;
}
}
class LaunchGuiComponent {
public void Launch(pick t) {
window.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); window.setSize(900, 700);
window.setTitle(t.toString());
ArrayList<JLabel> Etiquetas = new ArrayList<JLabel>();
Container contentPane
= window.
getContentPane(); for (int i = 1; i < 5; i++) {
JLabel etiqueta
= t.
etiquetas(i
); Etiquetas.add(etiqueta);
contentPane.add(etiqueta);
}
window.setVisible(true);
}
}
public class main {
public static void main
(String[] args
) {
Facturas obj = new Facturas();
new LaunchGuiComponent().Launch(obj);
}
}
Te recomiendo que uses la clase ArrayList en vez de Vector (es una colección obsoleta).
Fíjate que el bucle debe empezar en 1 en vez de en 0, para que te aparezcan bien todas las etiquetas (en el método etiquetas, el primer valor es 1). Si usases el bucle que tu usases, tendrías que tener en cuenta que un array empieza con índice 0 y restarle 1 al valor de i.
Te fijarás que uso getContentPane y añado los JLabel allí directamente. En las últimas versiones de Java, es indistinto utilizar el método add de JFrame y el método add del panel contenedor, pero no en versiones antiguas.
Con el método setLayout se fija el tipo de layout que quieres usar (yo he elegido FlowLayout, el más sencillo,, pero puedes usar el que desees).
Saludos y suerte,
Alejandro