elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Vector<JLabel > compila pero no se agrega a la ventana.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Vector<JLabel > compila pero no se agrega a la ventana.  (Leído 2,636 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Vector<JLabel > compila pero no se agrega a la ventana.
« en: 2 Julio 2012, 17:36 pm »

Buenas tengo el siguiente codigo , bien disculpen lo de ser tan directo pero me urge aprender ahora estoy leyendo pero me gustaria saber su opinion acerca de como el siguiente codigo puede correr perfectamente. EXPLICACION :tengo un marco (JFrame ) quisiera que el vector de JLabel que tengo se agregue todo dinamicamente. creo que lo hace pero cuando quiero que el componente(JLabel ) aparezca solo aparece el ultimo. AHI ABAJO ESTA EL CODIGO.

gracias y disculpen el desorden . :xD


Código
  1. /*
  2.  
  3.  
  4.     main.java
  5.  
  6.  
  7.  
  8. */
  9.  
  10.  
  11. import javax.swing.JFrame;
  12. import javax.swing.JOptionPane;
  13. import javax.swing.JLabel;
  14. import java.awt.FlowLayout;
  15. import java.util.Vector;
  16.  
  17.  
  18. class pick{
  19.   public JLabel etiquetas(int tipo){return new JLabel();}
  20.   public String toString(){return "$$$$$";}
  21.  
  22. }
  23.  
  24. class Facturas extends pick{
  25. public String toString(){
  26. return "facturas";
  27. }
  28. public JLabel etiquetas(int tipo){
  29.  
  30.  JLabel etiquetas = new JLabel();
  31.  
  32.  switch(tipo){
  33.    ///1 : Facturas Comerciales.
  34.    ///2 : Facturas Clientes Individuales.
  35.    ///3 : Facturas Con RNC.
  36.    ///4 : Facturas Sencillas.
  37.    ///5 :  $moneda(depende de una clase de moneda).
  38.  
  39.    case 1:
  40.     etiquetas.setText("Facturas Comerciales\n");
  41.    break;
  42. case 2:
  43.     etiquetas.setText("Clientes Individuales \n");
  44.    break;
  45.    case 3:
  46.     etiquetas.setText("Facturas Con RNC\n");
  47.    break;  
  48.         case 4:
  49.     etiquetas.setText("Facturas Sencillas \n");
  50.    break;
  51.  
  52.  
  53.  
  54.  
  55. }
  56.  
  57. return etiquetas;
  58. }
  59.  
  60. }
  61.  
  62.  
  63.  
  64. class LaunchGuiComponent{
  65.  
  66.    public void Launch(pick t){
  67.  
  68.  
  69.    JFrame window = new JFrame();
  70.    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  71.    window.setSize(900,700);
  72.    window.setTitle(t.toString());
  73.    Vector<JLabel> Etiquetas = new Vector();
  74.    for(int i_= 0 ; i_ < 5; i_++){
  75. Etiquetas.add(t.etiquetas(i_));
  76. window.add(Etiquetas.elementAt(i_));
  77. }
  78.  
  79.    window.setVisible(true);
  80.  
  81.  
  82.  
  83.  
  84.  
  85.    }
  86. }
  87.  
  88.  
  89.  
  90. public class main{
  91.  
  92.  
  93.  public static void main(String []args){
  94.  
  95.    Facturas obj = new Facturas();
  96.    new LaunchGuiComponent().Launch(obj);
  97.  
  98. }
  99.  
  100. }
  101.  


En línea

gracias por responder mis dudas
alexg88

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Vector<JLabel > compila pero no se agrega a la ventana.
« Respuesta #1 en: 3 Julio 2012, 22:03 pm »

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).

Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package vector;
  6.  
  7. import java.awt.Container;
  8. import java.awt.FlowLayout;
  9. import java.util.ArrayList;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12.  
  13. class pick {
  14.  
  15.    public JLabel etiquetas(int tipo) {
  16.        return new JLabel();
  17.    }
  18.  
  19.    @Override
  20.    public String toString() {
  21.        return "$$$$$";
  22.    }
  23. }
  24.  
  25. class Facturas extends pick {
  26.  
  27.    @Override
  28.    public String toString() {
  29.        return "facturas";
  30.    }
  31.  
  32.    @Override
  33.    public JLabel etiquetas(int tipo) {
  34.  
  35.        JLabel etiquetas = new JLabel();
  36.  
  37.        switch (tipo) {
  38.            ///1 : Facturas Comerciales.
  39.            ///2 : Facturas Clientes Individuales.
  40.            ///3 : Facturas Con RNC.
  41.            ///4 : Facturas Sencillas.
  42.            ///5 :  $moneda(depende de una clase de moneda).
  43.  
  44.            case 1:
  45.                etiquetas.setText("Facturas Comerciales\n");
  46.                break;
  47.            case 2:
  48.                etiquetas.setText("Clientes Individuales \n");
  49.                break;
  50.            case 3:
  51.                etiquetas.setText("Facturas Con RNC\n");
  52.                break;
  53.            case 4:
  54.                etiquetas.setText("Facturas Sencillas \n");
  55.                break;
  56.  
  57.  
  58.  
  59.  
  60.        }
  61.  
  62.        return etiquetas;
  63.    }
  64. }
  65.  
  66. class LaunchGuiComponent {
  67.  
  68.    public void Launch(pick t) {
  69.  
  70.  
  71.        JFrame window = new JFrame();
  72.        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  73.        window.setSize(900, 700);
  74.        window.setTitle(t.toString());
  75.        ArrayList<JLabel> Etiquetas = new ArrayList<JLabel>();
  76.  
  77.        Container contentPane = window.getContentPane();
  78.        contentPane.setLayout(new FlowLayout());
  79.        for (int i = 1; i < 5; i++) {
  80.            JLabel etiqueta = t.etiquetas(i);
  81.            Etiquetas.add(etiqueta);
  82.            contentPane.add(etiqueta);
  83.        }
  84.  
  85.        window.setVisible(true);
  86.  
  87.  
  88.  
  89.  
  90.  
  91.    }
  92. }
  93.  
  94. public class main {
  95.  
  96.    public static void main(String[] args) {
  97.  
  98.        Facturas obj = new Facturas();
  99.        new LaunchGuiComponent().Launch(obj);
  100.  
  101.    }
  102. }
  103.  
  104.  

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


En línea

bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
Re: Vector<JLabel > compila pero no se agrega a la ventana.
« Respuesta #2 en: 4 Julio 2012, 17:15 pm »

vaya y que lo tenia en frente gracias.


yo pensaba usar al principio
Código
  1. window.setLayout(new FlowLayout());
En línea

gracias por responder mis dudas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Compila bien, pero no ejecuta !! Solucionado
Java
Vingilot 4 3,961 Último mensaje 8 Enero 2008, 15:20 pm
por Vingilot
Programa que compila, pero error en consola
Java
AndenBomber 1 2,656 Último mensaje 29 Mayo 2008, 19:49 pm
por HadesDark
Calcular mcd. Compila bien pero no corre « 1 2 3 »
Programación C/C++
jairogon 24 15,836 Último mensaje 3 Julio 2010, 03:09 am
por nicolas_cof
Problema en DevC++, compila pero no se ejecuta.
Programación C/C++
jairogon 9 33,897 Último mensaje 11 Julio 2010, 21:32 pm
por codeliber
¿Programa en c++ compila correctamente, pero se cuelga al correr?
Programación C/C++
erikat 3 3,822 Último mensaje 4 Diciembre 2013, 12:22 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines