Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ¿Como puedo crear y agregar un JTable correctamente?

Estas en el tema de ¿Como puedo crear y agregar un JTable correctamente? en el foro de Java en Foros del Web. Estoy buscando la forma en como se debe de crear una JTable pero aun no conozco la forma correcta en como esto se hace.... he ...
  #1 (permalink)  
Antiguo 09/02/2014, 12:17
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años
Puntos: 1
Exclamación ¿Como puedo crear y agregar un JTable correctamente?

Estoy buscando la forma en como se debe de crear una JTable pero aun no conozco la forma correcta en como esto se hace.... he copiado el código de un ejemplo (parte de él) y lo he agregado al mio para ver si funciona pero ni siquiera de muestra.


Tengo que dividir el JFrame en 4 partes, para eso use el GridLayout(2,2) y cree 4 JPanel y los agregue al Layout, solo para comprobar que se agregaron:



Pero al agregar el codigo del Jtabla al primero Panel, queda asi:



Este es mi codigo:

Código:
public class Simulacion extends JFrame{
    
    public static void main(String[] args){
        Simulacion s = new Simulacion();
        s.setSize(1300,700); //Tamaño de ventana por default
    }
    
    
    JPanel contenido;
    
    public Simulacion(){
        setTitle("Simulacion de Procesos");
        
        contenido = new JPanel();
        contenido.setLayout(new GridLayout(2,2)); //Tipo
        getContentPane().add(contenido);
        
        //----------------------METODOS
        agregarComponentes();
        
        //Control
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        pack();
    
    }//Fin constructor
    
    
    void agregarComponentes(){
        
        //-------------------------------------------TABLA
        JPanel Tabla = new JPanel();
        
        
        Object[][] data = { 
                {"Mary", "Campione", "Esquiar", new Integer(5), new Boolean(false)}, 
                {"Lhucas", "Huml", "Patinar", new Integer(3), new Boolean(true)}, 
                {"Kathya", "Walrath", "Escalar", new Integer(2), new Boolean(false)}, 
                {"Marcus", "Andrews", "Correr", new Integer(7), new Boolean(true)}, 
                {"Angela", "Lalth", "Nadar", new Integer(4), new Boolean(false)} 
        };

        
        String[] columnNames = {"Nombre", "Apellido", "Pasatiempo", "Años de Practica", "Soltero(a)"};
        
        final JTable table = new JTable(data, columnNames);
        table.setPreferredScrollableViewportSize(new Dimension(500, 80));
        
        
        JScrollPane scrollpane = new JScrollPane(table);
        
        getContentPane().add(scrollpane);
        
        Tabla.add(table);
        
        contenido.add(Tabla);
        
        //-------------------------------------------TABLA DE TIEMPO
        JPanel Tiempo = new JPanel();
        Tiempo.setBackground(Color.gray);
        contenido.add(Tiempo);
        
        
        //-------------------------------------------PROCESOS
        JPanel Procesos = new JPanel();
        Procesos.setBackground(Color.gray);
        contenido.add(Procesos);
        
        
        //-------------------------------------------BOTONES, OPCIONES, ETC.
        JPanel Opciones = new JPanel();
        contenido.add(Opciones);
        
        
    }    
}



Soy novato en esto de los componentes Swing y awt. Si hay algun error muy simple es por eso hehe.
Si hay una forma más sencilla díganmela porfa, y si es posible expliquen que es cada cosa, no me gusta usar algo que no se que es.

Última edición por charlybinn; 09/02/2014 a las 13:30
  #2 (permalink)  
Antiguo 09/02/2014, 14:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Como puedo crear y agregar un JTable correctamente?

Hola:

Sí, lo tienes un poco liado. Tampoco sé que decirte, porque no sé qué quieres hacer, si poner que el JTable ocupe toda la ventana o que ocupe uno de los cuatro paneles. Entiendo que toda la ventana.

El primer fallo "gordo" que tienes es que un componente (el jtable) no puede estar en dos sitios a la vez. Lo has añadido al JScrollPane con esto

JScrollPane scrollpane = new JScrollPane(table);

pero lo añades también al Jpanel así

Tabla.add(table);

y otro fallo es que estás añadiendo dos componentes a getContentPane(), el getContentPane().add(scrollPane) y getContentPane().add(contenido). Como en contentPane tiene por defecto un BorderLayout y no le estás diciendo dónde añadir los componentes, los añade uno encima de otro y uno queda oculto.

Si quieres que el JTable ocupe toda la ventana, lo más fácil es esto

Código Java:
Ver original
  1. JTable table = new JTable(....);
  2. JScrollPane scroll = new JScrollPane(table);
  3. getConentPane().add(scroll);

Si pretendes ocupar solo una cuarta parte, el código es

Código Java:
Ver original
  1. getContentPane().setLayout(new GridLayout(2,2));
  2. getContentPane().add(panel1);
  3. getContentPane().add(scroll); // scroll inicializado como arriba, con su jtable
  4. getContentPane().add(panel3);
  5. getContentPane().add(panel4);

Ten en cuenta que getContentPane() de devuelve el panel principal de la ventana y no es necesario añadirle un segundo panel "contenido".

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 09/02/2014, 14:47
Avatar de charlybinn  
Fecha de Ingreso: abril-2013
Ubicación: Sonora, Mex.
Mensajes: 26
Antigüedad: 11 años
Puntos: 1
Respuesta: ¿Como puedo crear y agregar un JTable correctamente?

Si, estaba haciendo unos cambios y checando otros ejemplos y ya vi ese error que me mencionas y otros más que no habia pensado, igual ya logre solcionarlo... Gracias :)

Etiquetas: jtable, paneles
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.