Mostrar Mensajes

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - mkeydiluffy

Pages: [1]
1
Java JSE / Buscar en hashtable
« on: Agosto 29, 2012, 08:37:53 pm »
Os comento he implementado una clase, en la que cuando la ejecuto me aparece una ventana en donde tengo un TextField (matricula) una tableMode en el panel sur y un boton (Buscar), la funcionalida es nula solo se ejecuta la ventana y aparece.
El problema es que no se como hacer para que cuando yo escriba una matricula (TextField) y le de a buscar (Boton) me recorra el hashtable en donde tengo guardados los coches y me muestre en el Tablemodel la matricula y demas atributos del coche que coincida con la matricula, os pongo el codigo que tengo hecho:

Code: [Select]
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

}


A ver si alguien puede ayudarme con esto, gracias a todos en principio. Si supiera como subir una foto subiria la de la ventana para que la veais, pero no se soy un poco cepo con estas cosas.

2
Java JSE / Problema con NullPointerExcepcion
« on: Agosto 25, 2012, 11:33:32 pm »
Hola buenas tardes, resulta que tengo unos fallos que me estan volviendo loco, porque no hay manera de saber que es lo que pasa o de donde vienen y me estoy estrujando los sesos y no hay manera, os comento.

El principal problema es que tengo una aplicacion se ejecuta, aunque con advertencia, y tengo un JMenuBar dentro de el tengo varios menus con sus pestaƱitas, pues resulta que cuando le doy a un que es "Nuevo Coche" ( el programa es una tienda de coches) me sale esto:

Code: [Select]
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)

Yo tengo implementado en el JMenuBar que cuando le de a este boton me crea un nuevo objeto de la clase Nuevo Coche y en su constructor tengo una ventana para que se abra y asi poder poner las caracteristicas del coche, pero claro no se abre.
Se que lo de nullpointerexception pasa cuando un objeto esta invocado vacio pero no entiendo porque no se ejecuta la ventana.
De todos modos os pongo el codigo que me marca ahy la excepcion:

public class NuevoCoche implements ActionListener {

   
   //objetos del coche
   Coche coche;
   PanelEspecificaciones panelEspecificaciones;
   String matricula;
   String marca;
   String modelo;
   String color;
   String tipoMotor;
   String concesionario;
   String clase = "Berlina";
   
   JComboBox sucursalConcesionario;
   JTextField matriculaCoche;
   JTextField marcaCoche;
   JTextField modeloCoche;
   JComboBox carburanteCoche;
   JComboBox claseCoche;
   
JPanel panelPrincipal = new JPanel();
   
   
   //Metodo constructor que nos inicializa la ventana secundaria.
   
   public NuevoCoche() {
      sucursalConcesionario = new JComboBox();
      sucursalConcesionario.setName("sucursalConcesionario");
      matriculaCoche = new JTextField(10);
      matriculaCoche.setName("matriculaCoche");
      marcaCoche = new JTextField(10);
      marcaCoche.setName("marcaCoche");
      modeloCoche = new JTextField(10);
      modeloCoche.setName("modeloCoche");
      carburanteCoche = new JComboBox();
      carburanteCoche.setName("carburanteCoche");
      claseCoche = new JComboBox();
      claseCoche.setName("claseCoche");
      
      JDialog ventanaAddCoche = new JDialog();      
      ventanaAddCoche.setTitle("Nuevo Coche");
                ventanaAddCoche.setContentPane(getPanelPrincipal());
           ventanaAddCoche.setModal(true);
      ventanaAddCoche.pack();
      ventanaAddCoche.setLocationRelativeTo(null);
      ventanaAddCoche.setVisible(true);
   
   }
   
   //Panel principal que contendra el panel de campos y el panel del boton agregar
   
      public JPanel getPanelPrincipal(){
         panelPrincipal.setLayout(new BoxLayout(panelPrincipal,BoxLayout.PAGE_AXIS));
      //   panelPrincipal.add(getPanelLabel());
         panelPrincipal.add(getPanelAddCoche());
         panelPrincipal.add(getJpanelEspecificaciones());
         panelPrincipal.add(getPanelAddCocheBoton());
         panelPrincipal.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
         return panelPrincipal;
      }
   
      //Panel(NORTE)
      
      public JPanel getPanelAddCoche(){
         JPanel panelAddCoche = new JPanel();
         panelAddCoche.setLayout(new GridLayout(0,2));
         panelAddCoche.add(new JLabel("Sucursal"));
         panelAddCoche.add(getSucursalConcesionario());
         panelAddCoche.add(new JLabel("Matricula"));
         matriculaCoche.addActionListener(this);
         panelAddCoche.add(matriculaCoche);
         panelAddCoche.add(new JLabel("Marca"));
         panelAddCoche.add(marcaCoche);
         panelAddCoche.add(new JLabel("Modelo"));
         panelAddCoche.add(modeloCoche);
         panelAddCoche.add(new JLabel("Clase"));
         panelAddCoche.add(getClaseCoche());
         panelAddCoche.add(new JLabel("TipoMotor"));
         panelAddCoche.add(getTipoMotor());
         panelAddCoche.setBorder(BorderFactory.createEmptyBorder(15,15,0,15));
         
      return panelAddCoche;
      }
      
      public JPanel getJpanelEspecificaciones(){
         
         JPanel jpanelEspecificaciones = new JPanel();
         jpanelEspecificaciones.setLayout(new GridBagLayout());
         
         // Ahora mostramos el panel necesario
         try {
            String ClaseEspecifica = "ucam.aplicacion.Coches.PanelEspecificaciones"+clase; // Ligadura dinamica
            panelEspecificaciones = (PanelEspecificaciones) Class.forName(ClaseEspecifica).newInstance();
         } catch (InstantiationException e) {
            
            e.printStackTrace();
         } catch (IllegalAccessException e) {
         
            e.printStackTrace();
         } catch (ClassNotFoundException e) {
            
            e.printStackTrace();
         }
         jpanelEspecificaciones.add(panelEspecificaciones.getPanelEspecificaciones());
         
         return jpanelEspecificaciones;   
         
      }
      
      //Generamos los JCombo Box
      
      public JComboBox getSucursalConcesionario() {
         

         if (sucursalConcesionario.getItemCount() == 0){
            
            //Los atributos que se cargaran en el JComboBox los extraemos del fichero concesionarios
            
            GestionarConcesionario gCon = new GestionarConcesionario();
            Hashtable hashConcesionarios = gCon.reCargar();
            
            for(Enumeration e = hashConcesionarios.keys(); e.hasMoreElements();){
               Object obj = e.nextElement();
                sucursalConcesionario.addItem(obj);
            }   
         }
            sucursalConcesionario.addActionListener(this);
            return sucursalConcesionario;
      }
      
      
      @SuppressWarnings("unchecked")
      public JComboBox getClaseCoche() {
         

         if (claseCoche.getItemCount() == 0){
            
            //Los atributos que se cargaran en el JComboBox los extraemos del fichero propiedades
            
            GestionarPropiedades gP = new GestionarPropiedades();
            String posiciones = gP.sacarClases();
            String[] arrayPosiciones = posiciones.split(" ");
                     
               for(int i = 0 ;i<arrayPosiciones.length ; i++){
                  claseCoche.addItem(arrayPosiciones);
               }
         }
            claseCoche.addActionListener(this);
            return claseCoche;
      }


      public JComboBox getTipoMotor() {
         if (carburanteCoche.getItemCount() == 0){      
            carburanteCoche.addItem("Gasolina");
            carburanteCoche.addItem("Diesel");
            carburanteCoche.addItem("Bio-Diesel");
            carburanteCoche.addItem("Hibrido");
         }
         
         return carburanteCoche;
         
      }
      
      //Panel del Boton agregar con el mismo incluido (SUR)
      
      public JPanel getPanelAddCocheBoton(){
         JPanel panelAddCocheBoton = new JPanel();
         JButton botonAceptar = new JButton("Aceptar");
         panelAddCocheBoton.setLayout(new GridLayout(1,1));
         panelAddCocheBoton.add(botonAceptar);
         
         
         ActionListener listener = new ActionListener(){
         
         

            
             public void actionPerformed(ActionEvent e) {
               
               concesionario = sucursalConcesionario.getSelectedItem().toString();
               matricula = matriculaCoche.getText().toString();
               System.out.println(matricula);
               marca = marcaCoche.getText().toString();
               modelo = modeloCoche.getText().toString();
               clase = claseCoche.getSelectedItem().toString();
               tipoMotor = carburanteCoche.getSelectedItem().toString();
               //******************************************************
               // Comprobamos si la matricula existe.
               Hashtable<String,Coche> coch = GestionarCoche.reCargar();
               Enumeration<String> en=coch.keys();
               String m=null;
               if(en.hasMoreElements()){
                  m=en.nextElement();
               }
               while(m!=null && m.compareTo(matricula)!=0 && en.hasMoreElements()){
                   m=en.nextElement();
               }
               
               if(m==null || m.compareTo(matricula)!=0){
               //*******************************************************
                  try {
                        coche = (Coche) Class.forName("ucam.aplicacion."+clase).newInstance(); // Ligadura dinamica
                     } catch (InstantiationException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                     } catch (IllegalAccessException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                     } catch (ClassNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                     }
                     
                          coche.agregarAtributos(concesionario, matricula, marca,  modelo, clase, tipoMotor, panelEspecificaciones);
                     
                     //Creamos el ArrayList que contendra las especificaciones,
                     
                     ArrayList<Integer> listaEspecificaciones = new ArrayList<Integer>();
                     int especificacion1 = Integer.parseInt(panelEspecificaciones.especificacion1Coche.getText().toString());
                     
                     listaEspecificaciones.add(especificacion1);
                  
                     coche.agregarAtributos(listaEspecificaciones);
                     coche.guardarCoche(coche);
                     coche.sacarAtributos();
                     JOptionPane.showMessageDialog(null, marca + modelo +" ha sido agregado al concesionario ", "Nuevo Coche", JOptionPane.INFORMATION_MESSAGE);               
                  }
                 else{
                     JOptionPane.showMessageDialog(null, "Esta matricula ya existe","Introduzca otra distinta", JOptionPane.OK_OPTION);
                 }
             }
         
            
          };
      
          botonAceptar.addActionListener(listener);
         
         
               
         return panelAddCocheBoton;
         
      }

      @Override
      public void actionPerformed(ActionEvent actionEvent) {
         
         //Este metodo le da funcionalidad al JcomboBox
         //Recoge el valor selecionado en el ComboBox para volver a pintar el
         //panelPrincipal con su consiguiente instanciacion del Panel de Especificaciones
         
         
         if (actionEvent.getSource() == claseCoche){
            clase = claseCoche.getSelectedItem().toString();
            panelPrincipal.removeAll();
            panelPrincipal.setLayout(new BoxLayout(panelPrincipal,BoxLayout.PAGE_AXIS));
   //         panelPrincipal.add(getPanelLabel());
            panelPrincipal.add(getPanelAddCoche());
            panelPrincipal.add(getJpanelEspecificaciones());
            panelPrincipal.add(getPanelAddCocheBoton());
            panelPrincipal.updateUI();
         }
         else if (actionEvent.getSource() == matriculaCoche){
            claseCoche.requestFocus();
         }   
                  
            
      }
      
}


En lo que esta rojo es donde me salta cuando pulso en los fallos que me aparecen, lo que he ido haciendo es recorriendo la accion desde que pulso el boton hasta que se tiene que abrir la ventana y no veo nada mal, a ver si pudieran ayudarme porque me estoy volviendo loco sin saber que ocurre, gracias de antemano a todos.

PD: Perdonarme por no poner como codigo todo el codigo, pero es que queria poner en color donde me da el fallo y como codigo no me dejaba, y  si no me explico bien es que soy novatillo en java aun.

Pages: [1]
ey