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

JTable Problem

Estas en el tema de JTable Problem en el foro de Java en Foros del Web. Buenas noches, soy niubi en Java y este es mi primer post en este foro, está muy bueno ^^ Les cuento, necesito realizar unos reportes ...
  #1 (permalink)  
Antiguo 14/06/2010, 23:05
 
Fecha de Ingreso: junio-2010
Mensajes: 25
Antigüedad: 13 años, 10 meses
Puntos: 0
JTable Problem

Buenas noches, soy niubi en Java y este es mi primer post en este foro, está muy bueno ^^

Les cuento, necesito realizar unos reportes en JTable.

Primero que nada el profe nos hizo hacer un jtable pero en applet. La cosa ahora es que necesito hacerlo en un frame y no sé hacerlo xD.

el código:

Código:
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
public class Reporte_JTable extends JApplet {
    private java.sql.Connection conexion;
    private java.sql.Statement sentenciaSQL;
    private java.sql.ResultSet resultado;

public void conectar()throws java.sql.SQLException
    {
        try
        {
            //cargar el driver para JDBC y motor MySQL
            String controlador = "com.mysql.jdbc.Driver";
            Class.forName(controlador);

        }//cierre del bloque try
        catch(ClassNotFoundException ex)
        {
            JOptionPane.showMessageDialog(null, "no se pudo cargar el driver JDBC", "Aviso Carga Driver", JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace(); //muestra el detalle de error en consola
        }

        //nombre del servidor y puerto a utilizar + Base de Datos
        String URL_bd = "jdbc:mysql://localhost:3306/remuneracion";
        String usuario = "root";
        String contraseña = "";    //depende de como entre a mysql
        //conectar con la base de datos
        conexion = java.sql.DriverManager.getConnection(URL_bd,usuario,contraseña);
        //habilitarsentencias SQL
        sentenciaSQL = conexion.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
                java.sql.ResultSet.CONCUR_UPDATABLE);
        JOptionPane.showMessageDialog(null, "Conexion Realizada con exito", "Aviso Conexion con Base de Datos", JOptionPane.INFORMATION_MESSAGE);


    }//cierre el metodo conectar

    Object [] data = new Object [3];

    //Crear objeto del modelo a usar
    DefaultTableModel defaulttablemodel = new DefaultTableModel();

    //Crear el objeto JTable, para visualizar los
    //Modelo
    JTable jtable = new JTable (defaulttablemodel);

    @Override
    public void init()
    {
        try
        {
            conectar();
        }
        catch(SQLException ex)
        {
            JOptionPane.showMessageDialog(null, "Conexion a Base de Datos Fallida", "Aviso Conexion con Base de Datos", JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }
        try
        {
            System.out.println("paso 1");
            resultado = sentenciaSQL.executeQuery("SELECT * FROM sueldo order by nombre");
        }
        catch(SQLException ex)
        {
            JOptionPane.showMessageDialog(null, "Query ha fallado", "Aviso Conexion con Base de Datos", JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }

        System.out.println("paso 2");
        for(int column = 0; column < 3; column++){
            if(column == 0)
                defaulttablemodel.addColumn("Ficha");
            if(column == 0)
                defaulttablemodel.addColumn("Nombre");
            if(column == 0)
                defaulttablemodel.addColumn("Sueldo Base");
        }
        try
        {
            System.out.println("paso 3");
            for(int row = 0; row <6; row++){
                while(resultado.next())
                {
                    System.out.println("paso 5");
                    for(int column = 0; column < 3; column++){
                        System.out.println("paso 4");

                        if(column == 0)
                            data[column] = resultado.getString("ficha");
                        if(column == 1)
                            data[column] = resultado.getString("nombre");
                        if(column == 2)
                            data[column] = resultado.getString("sueldo_base");
                    }
                    System.out.println("paso 6");
                    defaulttablemodel.addRow(data);
                }
            }
            System.out.println("paso 7");
            getContentPane().add(new JScrollPane(jtable));
        }
        catch(SQLException ex)
        {
            JOptionPane.showMessageDialog(null, "Query ha fallado", "Aviso Conexion con Base de Datos", JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }
    }
}
éste es con applet y me resulta, pero al hacerlo en el frame no, la parte de insertar las columnas y filas lo realizo en el constructor de la clase (el frame), pero no tengo resultados, no me aparece nada. Que debo hacer?

Disculpen mi poco concocimiento, es que estoy recien empezando :$

Gracias de antemano

Saludos.
  #2 (permalink)  
Antiguo 15/06/2010, 13:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: JTable Problem

Hola:

En un Applet (JApplet), el navegador se encarga de llamar a los métodos init() y start(), por lo que el código que hay ahí se ejecuta cuando se visualiza el Applet.

Una aplicación con JFrame no es para visualizarla en un navegador, por lo que el navegador no llamará a los métodos init() ni start() y de hecho, una aplicación con JFrame no suele llevar esos métodos. Para una aplicación de escritorio (que no se ejecuta en el navegador), lo normal es poner un método main() y ese ahí es donde empezará la ejecución del código. En ese método debes hacer un new de tu ventana que hereda de JFrame y hacerla visible. Al hacer ese new, se ejecutará el constructor con el código que lleve dentro.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: jtable
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 05:15.