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

buscar en un hastable

Estas en el tema de buscar en un hastable en el foro de Java en Foros del Web. Hola quisiera que me echaran una mano con un problemilla, resulta que tengo un jtextfiel en donde pongo la matricula del coche que quiero que ...
  #1 (permalink)  
Antiguo 11/08/2012, 12:50
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta buscar en un hastable

Hola quisiera que me echaran una mano con un problemilla, resulta que tengo un jtextfiel en donde pongo la matricula del coche que quiero que me busque de la hashtable de Coches luego he puesto un boton para que cuando lo pulse me muestre el coche con esa matricula y los demas atributos, color , modelo...
El tema es que no se como implementar el codigo lo que he probado no me funciona si pudieran orientarme un poco se lo agradeceria, espero sus respuestas muchas gracias.
  #2 (permalink)  
Antiguo 12/08/2012, 18:54
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: buscar en un hastable

Si estas usando la placa del coche como Key, basta con usar el metodo containsKey(Object key) y get(Object key).
Si no es asi, muestra como lo tienes para ver que esta mal.
  #3 (permalink)  
Antiguo 13/08/2012, 05:53
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Gracias por contestar, si mira esto estoy utilizando:


public BuscarCoche (String Matricula){

if(tabla.containsKey(Matricula));


return tabla.get(Matricula);
}


siendo la key del hastable la matricula, supongo que este metodo me devuelve la matricula del coche si existe entonces yo lo que quiero es que lo que me devuelve meterselo en un tablemodel para que me salga tanto la matricula pero ademas todos los otros campos que tiene cada objeto del hastable, que en realidad las tablas las tengo creadas con todos los objetos que hay en el hastable pero esta solo querria que me mostrara el que busco.
  #4 (permalink)  
Antiguo 13/08/2012, 23:33
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: buscar en un hastable

ese codigo que pusiste o lo copiaste mal, o tiene error, fijate que la signatura de tu método es:
public BuscarCoche(String Matricula)

y dentro de el metodo tienes un return tabla.get(Matricula);

Si tu metodo en la firma dice que no tiene valor de retorno por que haces un return.....

En fin, cuado tu creas un Hashtable, o un HashMap, existe una cualidad de java llamada Generics, al crear un Hash es reocmendable usar generics para indicar de que tipo de dato seran las keys y de que tipo de dato seran los valores, hasta ahora no has mencionado si Matricula es String o es long, o es otro tipo de dato (Objeto)....

Te voy a escribir un sencillo ejemplo de como recuperararía yo...

Código Java:
Ver original
  1. //Se crea el Hashtable usando Generics
  2. //El primer String se refiere a que las Key serán de tipo String
  3. //El segundo String se refiere a que los Values serán de tipo String
  4. Hashtable<String, String> ht = new Hashtable<String, String>();
  5.        
  6. //le meto unos cuantos valores
  7. ht.put("XTV-0456", "Aston Martin Color verde mayate");
  8. ht.put("IM-8ATM4N", "Lamborghini Gallardo Amarillo 'jodeme la vista' ");
  9. ht.put("5010-SOLO", "Porche Carrera GT Rojo Passion");
  10.    
  11. //supngamos que me dan una matricula
  12. String matricula = "5010-SOLO";
  13. //la busco
  14. if(ht.containsKey(matricula))
  15.     System.out.println(ht.get(matricula));
  16.        
  17. //la salida del programa es: Porche Carrera GT Rojo Passion

En un metodo pues se aplica la misma logica solo que en la firma del metodo debes especificar que tipo de dato vas a regresar:

Código Java:
Ver original
  1. public String obtenerDescripcion(String matricula) {
  2.     if(miHashTable.containsKey(matricula))
  3.         return miHashTable.get(matricula);
  4.     else
  5.         return "No existe ese coche!";
  6. }

Si usas el metodo el hashTable debe ser global o lo debes pasar como parametro, claro....

PD: de ultimas me gustaria comentar que hay convenciones de Java, donde los nombres de los metodos inican con minuscula, donde las variables se escriben en minuscula por completo, en tu codigo no sigues ninguna de estas, pero baah son convenciones solamente te las digo por si quieres hacerte un duro en Java siempre hay una manera correcta de hacer las cosas
__________________
De nada, hay te encargo +1...

Última edición por zero0097; 13/08/2012 a las 23:57
  #5 (permalink)  
Antiguo 14/08/2012, 10:52
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Si es cierto lo de la escritura de los metodos, lo tengo inculcado lo que pasa es que como soy novatillo en el mundo del java estoy aun en proceso de aprendizaje hay cosas que sin querer se me escapan.

A ver el tema es que la practica es extensa y cuando me pongo a pensar en como hacerlo me lio porque mis conocimientos no son muy amplios y he estado ayudandome de otra practica semejante.

Estoy haciendo una ventana para cuando pulse en el boton buscar de la barra de menus principal, y he puesto un TextField en donde voy a escribir la matricula del coche que quiero buscar y al lado el boton que inicia la busqueda y en la parte inferior un table model en donde me muestre todos los datos del coche que buscado.

Entonces en el metodo que me as puesto donde hace la comparacion de las matriculas que hay y la que le he metido? porque la key del hastable es la matricula eso si lo tengo pero no se donde tengo que ponerle el nombre que he utilizado para la matricula del textfiel, no se si me entiendes:


Código HTML:
public JButton getBotonBuscar(){
		if (botonBuscar== null);
			botonBuscar = new JButton();
			botonBuscar.setText("Buscar");

			
			ActionListener listener = new ActionListener(){
				
				@Override
				public void actionPerformed(ActionEvent e) {
					new  BuscarCoche();
					
				}
	
			};
	}
	public JTextField getMatriculaCoche(){
		if (matriculaCoche==null);
			matriculaCoche = new JTextField();
			return matriculaCoche;
		}
			
	public String BuscarCoche(String matricula) {
	    if(hashCoches.containsKey(matricula))
	        return (String) hashCoches.get(matricula);
	    else
	        return "No existe ese coche!";

			}
Con este codigo tengo dos fallos, el primero es que no me deja ponerle el nombre del metodo que quiero que ejecute cuando le doy al boton buscar coche, el segundo es que el metodo no me deja titularlo sin el String delantero, bueno y luego pues lo que te he dicho que no se como tengo me meterle el parametro del textfield para que me lo compare con las matriculas del hastable coches.

Espero que no te haya liado mucho si necesitas que te explique algo mas dimelo y lo que haga falta te lo digo o te copio el codigo, y por su puesto muchas gracias por tu ayuda de verdad me esta sirviendo de mucho.
  #6 (permalink)  
Antiguo 14/08/2012, 11:50
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: buscar en un hastable

Ha entonces quieres saber como obtener la matricula que hayan puesto en el TextField...

dado que tu TextField se llama "matriculaCoche", cuando den click al boton haces un:
String matricula = matriculaCoche.getText();

Ahora en la String matricula tenés la matricula... aca podes hacer validaciones, osea que la cadena de matricula no este vacía, que tenga cierto numero de caracteres, que no tenga simbolos raros etc....

Cuando ya hayas validado ahora la mandas como parametro al metodo "buscarCoche(matricula)"...

Ahora checa tambien, dentro de tu evento del boton pones "new BuscarCoche();" eso crea un objeto de una clase con ese nombre, pero abajo tienes un método con ese nombre, no te confundas asi no se manda llamar a un objeto, necesitas hacer un objeto de la clase donde esta el metodo, y usando ese objeto accedes al metodo de buscar coche....

Ejem:

Código Java:
Ver original
  1. boton.addActionListener(new ActionListener() {
  2.    public void actionPerformed(ActionEvent ev) {
  3.        //aki mando llamar el metodo usando un objeto de la clase
  4.        new Prueba().buscarCoche("una matricula");
  5. }
  6. });
  7.  
  8. class Prueba {
  9.    //aki tengo el metodo
  10.    public String buscarCoche(String matricula) {
  11.        return "una string";
  12. }
  13. }


Claro tu tienes que adaptarlo a tu ejemplo, si tu boton esta en la misma clase que el metodo buscar coche entonces haces un objeto de esa clase, sin embargo esto tal vez te genere una doble instancia de la GUI que manejes....

Cita:
Con este codigo tengo dos fallos, el primero es que no me deja ponerle el nombre del metodo que quiero que ejecute cuando le doy al boton buscar coche,.
Esto puede ser por lo que te digo intentas hacer un new BuscarCoche() y eso es el nombre d eun metodo y el new se usa con el nombre de una clase...


Cita:
el segundo es que el metodo no me deja titularlo sin el String delantero,
con el String delantero te refieres al parametro dentro de los parentesis? tal vez te marque error por que al llamar el metodo no le estas mandando un String como paramtro....


Espero y le encuentres, si no pregunta y por favor lo mas entendible para asi poderte ayudar mejor...
__________________
De nada, hay te encargo +1...
  #7 (permalink)  
Antiguo 15/08/2012, 09:06
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Vale lo que he hecho ha sido hacer una clase AccionBuscarcoche y meter el metodo de buscar coche hay para que no me diese el fallo que te dije y efectivamente se a corregido, ahora cuando le doy al boton tengo esto:

Código HTML:
public void actionPerformed(ActionEvent e) {
			String matricula = matriculaCoche.getText();
			new  AccionBuscarCoche();
Entonces cuando le pulso se pasa lo que tengo en matriculaCoche a String matricula y se ejecuta la clase AccionBuscarCoche que es donde tengo el metodo que me diste.

Ahora mi pregunta es cuando ese metodo se ejecuta me devuelve la matricula del coche si existe o salta el error si no existe, entonces como puedo coger lo que me devuelve ese metodo, porque yo en el hashtable lo que he hecho a sido meter una cadena de String:

Código HTML:
public void AtributosCoche(String concesionario,String matricula,String modelo,String marca,String tipoMotor,String color){
		setConcesionario(concesionario);
		setMatricula(matricula);
		setModelo(modelo);
		setMarca(marca);
		setTipoMotor(tipoMotor);
		setColor(tipoMotor);
Esos son los atributos de cada objeto del hashtable, osea de cada coche, entonces yo con lo que me devuelve el método que me diste lo que quiero es que si me devuelve la matricula del coche coger todos los demás atributos de ese coche para mostrarlos en un TableModel o como cadena de texto en un Scroll no se como mas fácil se implemente.

Espero que se me haya entendido mas o menos con claridad, espero tu respuesta y muchas gracias por todo.
  #8 (permalink)  
Antiguo 18/08/2012, 13:38
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: buscar en un hastable

tienes un fallo de conceptos enorme... checa en tu boton tienes esta partesita:
String matricula = matriculaCoche.getText();
new AccionBuscarCoche();


Cuando haces new AccionBuscarCoche(); creas un objeto de una clase llamada asi... y se ejcuta el constructor de esa clase, a menos que no busques el carro en el constructor este no buscara nada, ya que solo creas un objeto y ya... ademas de que te sirve tener el String matricula en el boton si cuando haces el new te pasas a otro objeto y alli en ese otro objeto no va a encontrar la string matricula por que no la declaraste en su ambito...

tu preguntas:
Cita:
entonces como puedo coger lo que me devuelve ese metodo?
Recuerda, como se declaran los mpetodos?
1.- Se pone un modificador de acceso ejem: public, private, protected
2.- Se pone el tipo de dato que quieres que TE REGRESE..
3.- Se le pone un nombre al metodo
4.- En parentesis se le pone los parametros que recibe, si es que recibira por que no es manda que lo haga...

Ahora bien, si tu en el paso 2 le pones un tipo de dato por ejemplo String, dentro de las llaves del metodo debes obligadamente poner un return valor; donde valor es del mismo tipo de dato del que regresa tu metodo... lo que pongas en valor es lo que te va a regresar tu metodo y debe ser del tipo que hayas puesto en la firma del metodo.... si pusiste void, entonces no tienes que poner return, por que void significa que ese metodo no te regresará nada....

Entonces no se cual es tu duda... incluso no se que vatallamos con metodos por que no necesitamos un metodo que busque y nos de el valor, por que esos metodos ya los tiene un hashTable....

en el boton solo has esto y punto:
String matricula = campoTexto.getText();
if(miHashtable.contains(matricula))
loQueSeaQueQuieroRecuperar = miHashtable.get(matricula);

y ya, "loQueSeaQueQuieroRecuperar" es una variable que deberias tener global, osea declarada en la clase, y el mapa hashtable tambien debe ser global.
__________________
De nada, hay te encargo +1...
  #9 (permalink)  
Antiguo 25/08/2012, 08:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Vale ya lo tengo hecho el programa corre bien pero cuando lo compilo se ejecuta pero en la consola me aparece esto:

Código HTML:
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at java.util.Hashtable.readObject(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at ucam.aplicacion.gestion.GestionarCoche.reCargar(GestionarCoche.java:104)
	at ucam.aplicacion.listasYtablas.ListaCoches.<init>(ListaCoches.java:23)
	at ucam.VentanaPrincipal.PanelPrincipal.getScrollPane(PanelPrincipal.java:134)
	at ucam.VentanaPrincipal.PanelPrincipal.getPanelSur(PanelPrincipal.java:98)
	at ucam.VentanaPrincipal.PanelPrincipal.<init>(PanelPrincipal.java:42)
	at ucam.VentanaPrincipal.VentanaPrincipal.<init>(VentanaPrincipal.java:54)
	at ucam.root.Root.main(Root.java:14)
Supongo que seran advertencias de algo pero no tengo ni idea de que pueden ser, además cuando le doy al boton de nuevo coche que supuestamente lo tengo para que cuando le de me cree un objeto de la clase nuevo coche, y en el constructor de esta clase tengo una ventana en donde pongo los atributos del coche y lo creo me sale un nullpoint:

Código HTML:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at ucam.aplicacion.Coches.NuevoCoche.getClaseCoche(NuevoCoche.java:168)
	at ucam.aplicacion.Coches.NuevoCoche.getPanelAddCoche(NuevoCoche.java:103)
	at ucam.aplicacion.Coches.NuevoCoche.getPanelPrincipal(NuevoCoche.java:81)
	at ucam.aplicacion.Coches.NuevoCoche.<init>(NuevoCoche.java:68)
	at ucam.VentanaPrincipal.BarraMenu.actionPerformed(BarraMenu.java:78)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	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)
Este chorro de advertencias ademas del null point y claro no me aparece la ventana, se que lo del null point es cuando invoco a un objeto que esta inciado vacio pero es que si no tengo ningun coche aun guardado va a estar vacio, hasta que no meta alguno, pero como no va no puedo meterlo, no se si podras ayudarme con esto pero es que estoy intentando saber porque tanta advertencia,
es que si por lo menos me saliera algo en el codigo sabria donde esta el problema pero no me sale na, a ver si puede alguien echarme una mano que salga de esta movida, gracias antes de nada a todos.
  #10 (permalink)  
Antiguo 26/08/2012, 01:16
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: buscar en un hastable

te da NullPointerException en la linea 168 de la clase "NuevoCoche" publica el codigo para ver...

recuerda siempre salen muchos errores pero solo el primero es el que importa....


otro consejo, o mas bien "convención" toda clase que sea abstraccion de un objeto real, como un auto, debe ser solo eso, no debes meter ventanas ni nada, es decir solo los atributos y funciones de un coche... y el nombre de la clase debe ser referencia a un objeto unico sin atributos, es decir en lugar de llamarse NuevoCoche, o ViejoCoche, o RojoCoche, o CocheBatman, debe llamarse Coche...
__________________
De nada, hay te encargo +1...
  #11 (permalink)  
Antiguo 28/08/2012, 08:26
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Si ya lo se, lo que pasa es que tengo la clase coche ya y la clase BorrarCoche y la clase ModificarCoche que en realidad no es que hereden de coche sino que son botones del menu en donde utilizo lo implementado en la clase coche a traves de una ventana.
Ahora mismo lo que tengo es esto y me da un fallo de nullPointerException y no se porque:

Código:
private static final long serialVersionUID = 1L;

	public VentanaBuscarCoche(){
		JPanel panelBuscar = new JPanel();
		panelBuscar.setName("Buscar Coche");
		panelBuscar.add(getPanelPrincipal());-->AQUI ES DONDE ME SITUA EL FALLO 3
		panelBuscar.setVisible(true);
		panelBuscar.setBackground(Color.green);
	//	panelBuscar.setModal(true);
	//	panelBuscar.pack();
		panelBuscar.setLocation(null);
	
	}
	
	public JPanel getPanelPrincipal(){
		panelPrincipal.setLayout(new BoxLayout(panelPrincipal,BoxLayout.PAGE_AXIS));
		panelPrincipal.add(getPanelLabel());
		panelPrincipal.add(getPanelNorte());-->AQUI ES DONDE ME SITUA EL FALLO 2
		panelPrincipal.add(getPanelSur());
		panelPrincipal.add(getBotonBuscar());
		panelPrincipal.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
		return panelPrincipal;
	}	
	
	
	
	public JPanel getPanelNorte(){
		if(panelnorte== null);
			
       panelnorte.setBounds(15, 15, 0, 15);-->AQUI ES DONDE ME SITUA EL FALLO 1
	 panelnorte.add(getMatriculaCoche()); 
	 panelnorte.add(getBotonBuscar());
			
			return panelnorte;
	}
	public JButton getBotonBuscar(){
		if (botonBuscar== null);
			botonBuscar = new JButton();
			botonBuscar.setText("Buscar");

			
			ActionListener listener = new ActionListener(){
				
				@Override
				public void actionPerformed(ActionEvent e) {
					
					GestionarCoche gC = new GestionarCoche();
					Hashtable hashCoches = gC.reCargar();
					String matricula = matriculaCoche.getText();
					if(hashCoches.contains(matricula))
						matricula = (String) hashCoches.get(matricula);
				
					
				}
	
			};
			return botonBuscar;
	}
	public JTextField getMatriculaCoche(){
		if (matriculaCoche==null);
			matriculaCoche = new JTextField();
			return matriculaCoche;
		}
	private JPanel getPanelLabel(){
		JPanel panelLabel = new JPanel();
		JLabel label = new JLabel("Buscar Coche");
		panelLabel.setLayout(new BorderLayout());
		panelLabel.add(label);
		return panelLabel;
	}		
	

	private JPanel getPanelSur() {
		panelSur.setLayout(new GridLayout(0,1));
		String Concesionario = "";
		String clase= "Todos";
		panelSur.add(getScrollPane(Concesionario, clase));
		panelSur.setBackground(Color.white);
			
		return panelSur;
	
	}
	
	
	
	public  JScrollPane getScrollPane(String Concesionario,String clase){
		
		ListaCoches modeloTabla = new ListaCoches("A");
		
		// creamos el modelo de tabla para que el mouselistener acepte el modelo de tabla que hay mas abajo
		tablaConcesionario = new JTable(modeloTabla);
		JScrollPane scroll = new JScrollPane(tablaConcesionario);
		
		
		return scroll;
	}
Y el fallo pos el tipico null pointer:
Código HTML:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at ucam.aplicacion.Coches.VentanaBuscarCoche.getPanelNorte(VentanaBuscarCoche.java:82)
	at ucam.aplicacion.Coches.VentanaBuscarCoche.getPanelPrincipal(VentanaBuscarCoche.java:70)
	at ucam.aplicacion.Coches.VentanaBuscarCoche.<init>(VentanaBuscarCoche.java:58)
	at ucam.VentanaPrincipal.BarraMenu.actionPerformed(BarraMenu.java:89)
A ver si sacas tu donde puede estar el fallo porque no yo lo pillo, gracias por todo.

Última edición por mkeydiluffy; 28/08/2012 a las 09:49
  #12 (permalink)  
Antiguo 29/08/2012, 10:29
 
Fecha de Ingreso: noviembre-2010
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en un hastable

Ok ya me va la ventana ahora lo que no va es la busqueda, he cambiado algo el codio lo pongo otra vez a ver si sabeis que pasa:

Código:
public class VentanaBuscarCoche implements ActionListener {


	/**
	 * 
	 */
	Coche coche;
	String concesionario;
	GestionarCoche gC = new GestionarCoche();
	String matricula;
	public JTextField matriculaCoche = new JTextField(10);
	String marca;
	String modelo;
	String clase;
	String tipoMotor;
	JScrollPane listaCoche;
	JPanel panelBuscar;
	JButton botonBuscar;

	public JTable tablaConcesionario;

	JPanel panelPrincipal = new JPanel();
	
	private static final long serialVersionUID = 1L;

	public VentanaBuscarCoche(){
		JDialog ventanaBuscarCoche = new JDialog();		
		ventanaBuscarCoche.setTitle("Buscar Coche");
		ventanaBuscarCoche.setContentPane(getPanelPrincipal());
		ventanaBuscarCoche.setModal(true);
		ventanaBuscarCoche.pack();
		ventanaBuscarCoche.setLocationRelativeTo(null);
		ventanaBuscarCoche.setVisible(true);
	}
	
	public Coche BuscarCoche(String matricula){
		
		coche =  gC.sacarDeFichero(matricula);
		concesionario = coche.getConcesionario();
		marca = coche.getMarca();
		modelo = coche.getModelo();
		clase = coche.getClase();
		tipoMotor = coche.getTipoMotor();
		
		return coche;
	}

	
	
	
	public JPanel getPanelPrincipal(){
		panelPrincipal.setLayout(new BoxLayout(panelPrincipal,BoxLayout.PAGE_AXIS));
		panelPrincipal.add(getPanelNorte());
		panelPrincipal.add(getPanelSur(matriculaCoche));
		panelPrincipal.add(getBotonBuscar());
		panelPrincipal.addNotify();
		panelPrincipal.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
		return panelPrincipal;
	}	
	
	
	
	public JPanel getPanelNorte(){
		JPanel panelnorte = new JPanel();
			
		    panelnorte.setLayout(new GridLayout(2,2));
			panelnorte.add(new JLabel("Pon Matricula"));
			panelnorte.add(matriculaCoche);
			
			return panelnorte;
	}
	public JButton getBotonBuscar(){
		if (botonBuscar== null);
			botonBuscar = new JButton();
			botonBuscar.setText("Buscar");

			
			ActionListener listener = new ActionListener(){
				
				@Override
				public void actionPerformed(ActionEvent e) {
					
					GestionarCoche gC = new GestionarCoche();
					Hashtable hashCoches = gC.reCargar();
					String matricula = matriculaCoche.getText();
					if(hashCoches.contains(matricula))
						matricula = (String) hashCoches.get(matricula);
					else{
						 JOptionPane.showMessageDialog(null,"Matricula no valida", "Buscar Coche", JOptionPane.INFORMATION_MESSAGE);								 
					 }
					
				}
	
			};
			return botonBuscar;
	}
	public JTextField getMatriculaCoche(){
		if (matriculaCoche==null);
			matriculaCoche = new JTextField();
			return matriculaCoche;
	}
	

	private JPanel getPanelSur(JTextField matriculaCoche) {
		JPanel panelSur = new JPanel();
		panelSur.setLayout(new GridLayout(0,1));
		String Concesionario = "";
		String clase= "Todos";
		panelSur.add(getScrollPane(Concesionario, clase));
		panelSur.setBackground(Color.white);
			
		return panelSur;
	
	}
	
	
	
	public  JScrollPane getScrollPane(String Concesionario,String clase){
		
		ListaCoches modeloTabla = new ListaCoches("A");
		
		// creamos el modelo de tabla para que el mouselistener acepte el modelo de tabla que hay mas abajo
		tablaConcesionario = new JTable(modeloTabla);
		JScrollPane scroll = new JScrollPane(tablaConcesionario);
		
		
		return scroll;
	} 

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
Otra cosa, quisiera saber si la busqueda se puede hacer en vez de por la key del hashtable por otro atributo de los coches, osea en vez de por la matricula que es la key por la clase de coche (berlina, familiar, todo terreno...), a ver si alguien lo sabe.
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:18.