Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - |Miguel|

#101
Buenas a todos.

Pues eso, que no sé cómo cerrar un JFrame desde un método....

La historia es que tengo un JFrame con unos cuantos botones. Al pulsarlos, llamo a una función estática y necesito que ese método me cierre el JFrame, con un dispose().

this.dispose() no ha funcionado, y pasar como parámetro al método el JFrame haciendo esto en la llamada tp:
Código (java) [Seleccionar]
metodo((JFrame)getParent()); //esto me da excepción de nullpointer al hacer dispose

Gracias!
#102
SOLUCIÓN:
Código (java) [Seleccionar]

//**************************************************************************
   static void rellenaJTable(JTable tabla, ResultSet res, String entidad){
       temp = (DefaultTableModel) tabla.getModel();
       try{
           while(res.next()){
               int pos = res.getRow();
               Object nuevo[] = rellenaFilaJTable(entidad, pos);
               temp.addRow(nuevo);
           }
       }catch(Exception e){
           excepcion(e, "Error 5. No se ha podido cargar Jtable "+tabla.getName());
       }        
   }
   //**************************************************************************
   static Object[] rellenaFilaJTable(String tabla, int elemento){
       seleccionaTabla(tabla);
       int longitud = 0;
       try{
           ResultSetMetaData rsmd = rs.getMetaData();
           longitud = rsmd.getColumnCount();
       }catch(Exception e){
           excepcion(e, "Error 6. No se ha podido obtener el número de columnas de '"+tabla+"'.");
       }
       Object[] res = new Object[longitud];
       try{
           posiciona(rs, elemento);
           for(int i=1; i<=longitud; i++){
               try{
                   res[i-1] = rs.getObject(i);
               }catch(Exception e){
                   excepcion(e, "Error 7. No se han podido rellenar las columnas de '"+tabla+"'; columna "+i+".");
               }
           }
       }catch(Exception e){excepcion(e);}
       return res;
   }
   //**************************************************************************
   static void posiciona(ResultSet result, int vueltas){
       try{
           for(int i=0; i<vueltas; i++)
               rs.next();
       }catch(Exception e){
           excepcion(e);
       }
   }


Explicaría cuál ha sido mi error y cómo lo he solucionado... pero sinceramente no tengo ni idea. He dado unos cuantos ctrl+Z para arreglar una cosa que había estropeado y ahora funciona bien... XD

Gracias a todos.
#103
Sí, por ahí deben ir los tiros... o eso creo. Tengo esto ahora mismo:
Código (java) [Seleccionar]

static void rellenaJTable(JTable tabla, ResultSet res, String entidad){
        temp = (DefaultTableModel) tabla.getModel();
        try{
            res.beforeFirst();
            while(res.next()){
                int pos = rs.getRow();
                Object nuevo[] = rellenaFilaJTable(entidad, pos);
                temp.addRow(nuevo);
            }
        }catch(Exception e){
            excepcion(e, "Error 5. No se ha podido cargar Jtable "+tabla.getName());
        }       
    }
    //**************************************************************************
    static Object[] rellenaFilaJTable(String tabla, int elemento){
        seleccionaTabla(tabla);
        int longitud = 0;
        try{
            ResultSetMetaData rsmd = rs.getMetaData();
            longitud = rsmd.getColumnCount();
        }catch(Exception e){
            excepcion(e, "Error 6. No se ha podido obtener el número de columnas de '"+tabla+"'.");
        }
        Object[] res = new Object[longitud];
        try{
            posiciona(rs, elemento);
            for(int i=1; i<=longitud; i++){
                try{
                    System.out.println(rs.getObject(i));
                    res[i-1] = rs.getObject(i);
                }catch(Exception e){
                    excepcion(e, "Error 7. No se han podido rellenar las columnas de '"+tabla+"'; columna "+i+".");
                }
            }
        }catch(Exception e){excepcion(e);}
        return res;
    }
    //**************************************************************************
    static void posiciona(ResultSet result, int vueltas){
        try{
            for(int i=0; i<=vueltas; i++)
                rs.next();
        }catch(Exception e){
            excepcion(e);
        }
    }


Esto me dibuja el JTable con tres filas, pero rellena solo dos. Es decir, me muestra los datos 2º y 3º, pero se come el primero y me salta la excepción del "Error7", dos veces (una por cada columna)... voy a ver los índices porque supongo que el fallo será ahí.
#104
Hola, buenas a todos.

A ver si me podéis echar un cable con esto... vamos a ver, tengo un JTable que quiero llenar con los datos obtenidos de un ResultSet. Hasta ahí todo iba perfecto, pero se me ha ocurrido la genial idea (o no tan genial) de intentar usar un método que me rellene cualquier JTable con cualquier ResultSet... (independientemente de la estructura de la tabla/s que formen el ResultSet)...

Y el resultado es que tengo una Tabla en la Base de Datos con 2 columnas y 3 datos (id y nombre) y lo que he hecho me saca el último dato de la tabla 3 veces.

Aquí os dejo el código de los métodos que uso para llenar el JTable:

Código (java) [Seleccionar]

//**************************************************************************
   static void rellenaJTable(JTable tabla, ResultSet res, String entidad){
       temp = (DefaultTableModel) tabla.getModel(); //Más arriba defino temp asi: static DefaultTableModel temp;
       try{
           res.beforeFirst();
           while(res.next()){                
               Object nuevo[] = rellenaFilaJTable(entidad);
               temp.addRow(nuevo);
           }
       }catch(Exception e){
           excepcion(e, "Error 5. No se ha podido cargar Jtable "+tabla.getName());
       }        
   }
   //**************************************************************************
   static Object[] rellenaFilaJTable(String tabla){
       seleccionaTabla(tabla); //método que carga el ResultSet rs con todos los datos de la tabla que le pase como parámetro
       int longitud = 0;
       try{
           ResultSetMetaData rsmd = rs.getMetaData();
           longitud = rsmd.getColumnCount();
       }catch(Exception e){
           excepcion(e, "Error 6. No se ha podido obtener el número de columnas de '"+tabla+"'.");
       }
       Object[] res = new Object[longitud];
       try{
           while(rs.next()){
               for(int i=1; i<=longitud; i++){
                   try{
                       res[i-1] = rs.getObject(i);
                   }catch(Exception e){
                       excepcion(e, "Error 7. No se han podido rellenar las columnas de '"+tabla+"'; columna "+i+".");
                   }
               }
           }
       }catch(Exception e){excepcion(e);}
       return res;
   }


Gracias!
#105
Ha vale, pensé que decías que llevaba 2 meses la noticia aquí...
Alguien habrá que no se haya enterado, digo yo XD
#106
Pues le he dado al buscador y no he visto la noticia por aquí...
#107
CitarPiensan construir un ascensor de 36.000 km. que nos lleve al espacio en 2050


  • El anuncio lo ha realizado una empresa japonesa y prevén que el viaje demorará una semana
Expertos hablan de la viabilidad del proyecto y ya imaginan un costoso turismo espacial[/li]
[/list]

La idea de construir un ascensor que conecte la Tierra con el espacio no es novedosa. Es una idea en mente desde hace más de cien años. Sin embargo, los expertos creen que con la tecnología actual es posible cristalizar ese sueño y prevén que en 40 años podría estar en marcha.

De concretarse, será un avance notable para el transporte espacial. Ya no se necesitarán los cohetes para llegar a las órbitas terrestres transportar con material o astronautas. Pero algunos creen que esta tecnología no sólo afectará a los astronautas y hablan de la creación de un "turismo espacial" que servirá para recuperar parte de la inversión que se realice en este proyecto.

Según la empresa japonesa que ha realizado el anuncio, la estructura tendrá 36.000 kilómetros de alto, a partir de la unión de 100.000 kilómetros de nanotubos de carbono. Este material es 20 veces más resistente que el acero y es una pieza fundamental para considerar posible esta idea. El ascensor alcanzará una velocidad de 200 kilómetros por hora, por lo que se tardará una semana en llegar al espacio.

Luis Ruiz de Gopegui, licenciado en Ciencias Físicas y exresponsable de las actividades de la NASA en España, ha dicho a Teinteresa.es que se trata "de una idea muy antigua" y ha indicado que los científicos aeronáuticos "creen que es viable, pero extraordinariamente costosa".

El experto ha señalado que con la tecnología actual es "perfectamente posible" llevar a cabo esta iniciativa debido a que la imponente estructura estará sostenida "por acción de la gravedad".

Tras reiterar que el costo que supone semejante obra es la principal barrera para avanzar, Ruíz de Gopegui señaló: "Es posible que los japoneses estén pensando en cobrar mucho para que la gente viaje a una estación espacial.  Eso permitiría recuperar algo de la inversión".

"Un avance tremendo"
El exresponsable de las actividades de la NASA en el país ha manifestado que este ascensor significaría "un avance tremendo". Permitiría que "cargas no muy pesadas" se pongan en órbita con el ascensor, "sin tener que lanzar un cohete espacial, lo que implica una enorme reducción de costos".

Esta tecnología también servirá para transportar astronautas, lo que hace suponer que para 2050 ya no será necesario un riguroso entrenamiento para llegar al espacio. "Los astronautas ya no son los hombres de hierro que eran hace años. Pero con este ascensor ya no hará falta prácticamente ningún entrenamiento", ha puntualizado Ruíz de Gopegui.

El anuncio
La japonesa Obayashi es una de las empresas que en 2008 respondió a una petición del gobierno de ese país para comenzar a trabajar en la construcción del ascensor espacial. En las últimas horas, desde la firma, han comunicado que en 2050  el elevador podría comenzar a operar.

La directora del proyecto, Satomi Katsuyama, ha explicado que el ascensor se desplazará sobre una "cuerda" construida con casi 100 mil kilómetros de nanotubos de carbono y funcionará por el propio movimiento de la Tierra. Si bien Katsuyama ha reconocido que aún quedan algunas trabas por superar, se ha mostrado confiada en que podrán superarse para que pueda comenzar la construcción. ¿Se imaginan ir en ascensor al espacio? En 2050 veremos.

FUENTE: http://www.teinteresa.es/increible/Ascensor-espacio-2050_0_653935739.html
#108
Si quito el paquete de delante, me dice que no encuentra la clase.

Por lo que veo, parece que eso solo funciona para las clases propias de Java... es (un fastidio) una pena, pero bueno... habrá que escribir un poco más, no pasa nada jeje

Gracias a los dos  ;D
#109
Creo q sí, de todas formas el método ya era estático. Justo estaba editando mi mensaje anterior mientras has contestado...

Gracias ;)
#110
No, me refiero a más adelante cuando vaya a usar uno de los métodos que están dentro de esa importación no me funciona poniendo simplemente el nombre del método, sino que tengo que poner paquete.clase.método cada vez que quiero usar esa función.

EDITO: es decir, tengo aquí un main, por ejemplo:
Código (java) [Seleccionar]

package proyectodeprueba;

public class ProyectoDePrueba {

    public static void main(String[] args) {
        paquete.clase.metodo();
    }
}


La librería...
Código (java) [Seleccionar]


package paquete;

public class clase {
    static public void metodo(){
        System.out.println("Mi método.");
    }
}


Pues lo que quiero es saber si en la línea del main que pone
Código (java) [Seleccionar]

paquete.clase.metodo();


Hay alguna forma de hacer q funcione solo con:
Código (java) [Seleccionar]

metodo();