Java - problema con metodo

 
Vista:

problema con metodo

Publicado por eduardo (8 intervenciones) el 01/03/2009 01:06:54
hola:

pongo esta parte de codigo que me esta trayendo problemas:

Listen1 listen=new Listen1(l1,t1);
b1.addActionListener(listen);
psur.add(t1,BorderLayout.SOUTH );
ventana.setTitle("final_eduardo_rohr");
ventana.setSize(300,250);
ventana.setBackground( Color.green);
ventana.setLayout(new BorderLayout());
pnorte.add(l1,BorderLayout.EAST );
pnorte.add(b1,BorderLayout.EAST );
pnorte.add(lab1,BorderLayout.EAST );
cerrarvent cerrar=new cerrarvent();
ventana.add(psur,BorderLayout.SOUTH );
ventana.add(pnorte,BorderLayout.NORTH );
super.pack() ;
ventana.addWindowListener(cerrar);
ventana.setVisible(true);


}
class Listen1 implements ActionListener{
List l1;
TextField t1;
String[] result=null;
public Listen1(List l1,TextField t1){
this.l1=l1;
this.t1=t1;
}
public void actionPerformed (ActionEvent ev1){
Button bu=(Button) ev1.getSource();
if (bu.getLabel()=="aceptar"){
CiudadService.buscarCiudadPorNombre(t1.getText());

}
}
En la class Listen1 ,en la ultima linea me marca este error"can.t make static reference to the non static metod of class ciudadservice"

el codigo del metodo buscarnombre de ciudadservice es:

public class CiudadService {
private Conectar conecta;
private final String RECUPERA_CIUDAD="SELECT * FROM PRUEBA.PUESTOS P WHERE P.PUESTO=(?)";
public CiudadService(){
conecta=new Conectar();
}
public String[] buscarCiudadPorNombre(String nombre) throws SQLException{
Connection cone= conecta.conectarse();
String[] resultado=null;
PreparedStatement ps=cone.prepareStatement(RECUPERA_CIUDAD);
ps.setString(1,nombre);
ResultSet rs=ps.executeQuery();
while (rs.next()){
int i=0;
resultado[i]=rs.getString(2);
// System.out.println("puesto: "+rs.getString(2));
i=i+1;
}
return resultado;
}


POR FAVOR QUE ALGUIEN ME AYUDE!!! GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con metodo

Publicado por Rene Gonzalez (115 intervenciones) el 01/03/2009 02:29:39
Tu problema es que esta haciendo una referencia estatica a un metodo que no lo es.
Una solucion es que al metodo buscarCiudadPorNombre() lo hagas estatico (lo cual a simple vista no parece una buena solucion) y la otra, es que modifiques tu codigo de la siguiente manera:

if (bu.getLabel()=="aceptar"){
CiudadService cs = new CiudadService();
cs.buscarCiudadPorNombre(t1.getText());
}

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con metodo

Publicado por eduardo (8 intervenciones) el 01/03/2009 14:32:04
Rene: antes que nada gracias por tu ayuda:

Habia intentado una vez que mande el post anterior ,instanciar el objeto ciudad
service ,pero al poner un texto en el textfield y clickear sale este error :
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

El codigo completo es:
package principal;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;

import service.CiudadService;

import conexion.Conectar;

public class ventanaprincipal extends Frame{
private Panel psur,pcentro,pnorte;

private Frame ventana=new Frame();
private Button b1=new Button("aceptar");
private TextField t1=new TextField(30);
private List l1=new List(5);
public ventanaprincipal(){
Label lab1=new Label("buscar");
psur=new Panel();
pnorte=new Panel();
pcentro=new Panel();

Listen1 listen=new Listen1(l1,t1);
b1.addActionListener(listen);
psur.add(t1,BorderLayout.SOUTH );
ventana.setTitle("final_eduardo_rohr");
ventana.setSize(300,250);
ventana.setBackground( Color.green);
ventana.setLayout(new BorderLayout());
pnorte.add(l1,BorderLayout.EAST );
pnorte.add(b1,BorderLayout.EAST );
pnorte.add(lab1,BorderLayout.EAST );
cerrarvent cerrar=new cerrarvent();
ventana.add(psur,BorderLayout.SOUTH );
ventana.add(pnorte,BorderLayout.NORTH );
super.pack() ;
ventana.addWindowListener(cerrar);
ventana.setVisible(true);


}
class Listen1 implements ActionListener{
List l1;
TextField t1;
String[] result;
CiudadService cser;
public Listen1(List l1,TextField t1){
this.l1=l1;
this.t1=t1;
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed (ActionEvent ev1){
Button bu=(Button) ev1.getSource();
if (bu.getLabel()=="aceptar"){

CiudadService cs = new CiudadService();
try {
result=cs.buscarCiudadPorNombre(t1.getText());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

class cerrarvent extends WindowAdapter{
public void windowClosing(WindowEvent ev){
System.exit(0);
}
}

//principlal
public static void main(String[] arg){
new ventanaprincipal();
}
}

/////////por las dudas ,adjunto el codigo de la clase ciudadservice

package service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import principal.ventanaprincipal;

import conexion.Conectar;

public class CiudadService {
private Conectar conecta;
private final String RECUPERA_CIUDAD="SELECT * FROM PRUEBA.PUESTOS P WHERE P.PUESTO=(?)";
public CiudadService(){
conecta=new Conectar();
}
public String[] buscarCiudadPorNombre(String nombre) throws SQLException{
Connection cone= conecta.conectarse();
String[] resultado=null;
PreparedStatement ps=cone.prepareStatement(RECUPERA_CIUDAD);
ps.setString(1,nombre);
ResultSet rs=ps.executeQuery();
while (rs.next()){
int i=0;
resultado[i]=rs.getString(2);
// System.out.println("puesto: "+rs.getString(2));
i=i+1;
}
return resultado;
}


}//fin de clase ciudad service

GRACIAS!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con metodo

Publicado por Rene Gonzalez (115 intervenciones) el 01/03/2009 16:38:24
Pueden ser varias razones ... primero intenta con solo obtener el texto ingresado en el textfield, luego rutea de a poco tu codigo, entrando en los metodos que tengas dudas de que funcionen bien.

Veo tambien que tienes un Frame dentro de tu clase principal que tambien extiende de
Frame. No es necesario que tengas 2, puede que ello te este generando algun problema.

Recuerda que al comparar 2 string se debe utilizar el metodo compareTo() y no el operador =.

Como norma estandar, es recomendable que todas tus clases comiencen con mayusculas. Ello facilita mucho la lectura de un ente externo de tu codigo (como yo) de forma que se pueden identificar inmediatamente las clases. Los mismo para las variables, en minusculas y nombres representativos.

Si esto es una tarea que debes presentar, te aseguro que quien revise tu codigo agradecera mucho estas simples ideas y probablemente las recompence, dado que demuestra interes en lo que estas haciendo.

Eso ... Espero soluciones tu problema. Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

gracias encontre la falla,pero...

Publicado por eduardo (49 intervenciones) el 01/03/2009 18:06:25
La falla esta en esta linea :

String[] resultado=null;
yo la corregi por :
String[] resultado=new String[30];

30 es un valor arbitrario que puse.

el tema es que necesito saber la manera de sacar el numero de filas devueltas en el recordset ,previo a recorrerlo con el while y el metodo next.

desde ya gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar