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.


Messages - mkeydiluffy

Pages: [1]
1
Java JSE / Re: Buscar en hashtable
« on: Septiembre 04, 2012, 04:33:47 am »
Efectivamente era eso que decias lo he quitado y ahora si va perfectamente, dejo el codigo por si le sirve a alguien le sirve:
Code: [Select]
public class BusquedaCoches extends javax.swing.JDialog{

private static final long serialVersionUID = 1L;
public JPanel panel;
public JScrollPane jscrollPane;
// public JTable jTable;
public TableModel tableModel = new ListaCoches("");
public TableRowSorter<TableModel> sorter  = new TableRowSorter<TableModel>(tableModel);
public RowFilter<TableModel, Object> rf = null;
JTextField filtro ;

//Metodo constructor que nos inicializa la ventana secundaria y la lista de coches.
//Tambien es donde se implementa el filtrado de la busqueda de los coches
public BusquedaCoches() {
setBounds(500, 500, 550, 550);
panel = new JPanel();
panel.setBorder(new EmptyBorder(5,5,5,5));
panel.setLayout(new BorderLayout(1, 0));
panel.add(getPanelInt(),BorderLayout.SOUTH);
setContentPane(panel);

jscrollPane = new JScrollPane();
JTable jTable = new JTable();
  //  jTable.setAutoCreateRowSorter(true);
jTable.setModel(tableModel);
jTable.setRowSorter(sorter);
       
jscrollPane.setViewportView(jTable);
    jscrollPane.setPreferredSize(new Dimension (400,400));
panel.add(jscrollPane,BorderLayout.NORTH);
this.setLocationRelativeTo(null);
this.setVisible(true);

}

//Aqui creo el panel interior que no seria necesario pero para el diseño es mas eficaz
public JPanel getPanelInt (){
JPanel pInt = new JPanel();
pInt.setLayout(new GridLayout(1,0));
filtro = new JTextField(10);

  pInt.add(new JLabel("Texto filtro: "));
  pInt.add(filtro);
  pInt.add(getBotonFiltro());

  pInt.setBorder(BorderFactory.createEmptyBorder(15,15,0,0));

  return pInt;     
}


//Aqui creamos el boton filtro con su actionListener en donde se implementa la accion filtrar.
private Component getBotonFiltro() {
JButton botonfiltro = new JButton("Filtrar");
botonfiltro.addActionListener(new ActionListener() {
  //******************************************************************* Accion filtrar.
public void actionPerformed(ActionEvent e) {
        String text = filtro.getText();
        if (text.length() == 0) {
          sorter.setRowFilter(null);
        } else {
          sorter.setRowFilter(RowFilter.regexFilter(text));
        }
      }
    });
return botonfiltro;
}


}
Hay esta y por supuesto muchas gracias chuidiang me as salvado la vida ya que este programa es para una practica de la uni y me a quedado DPM con lo del filtro y la solucion del problemilla del nullpointer, de verdad te lo agradezco un monton, seguire por este foro ya que es de los mejores en los que he estado, bueno muchas gracias por todo y a todos y si alguien quiere echarle un vistazo a la practica al completo que me lo diga y se la paso.
GRACIAS POR TODO.

2
Java JSE / Re: Buscar en hashtable
« on: Septiembre 03, 2012, 10:35:57 pm »
Cierto tienes razon no me habia fijado, lo he puesto todo al principio te lo pongo a ver, de todos modos no hace el filtro, se a puesto el textfiel como mas gris pero no hace el filtro.

Code: [Select]
public class BusquedaCoches extends javax.swing.JDialog{

private static final long serialVersionUID = 1L;
public JPanel panel;
public JScrollPane jscrollPane;
public JTable jTable;
public TableModel tableModel = new ListaCoches("");
public TableRowSorter<TableModel> sorter  = new TableRowSorter<TableModel>(tableModel);
public RowFilter<TableModel, Object> rf = null;
JTextField filtro ;
JComboBox cbColumna = new JComboBox(new String[] {"Matricula","Marca","Modelo","Clase","Tipo Motor"});


//Metodo constructor que nos inicializa la ventana secundaria listado.
public BusquedaCoches() {
setBounds(500, 500, 550, 550);
panel = new JPanel();
panel.setBorder(new EmptyBorder(5,5,5,5));
panel.setLayout(new BorderLayout(1, 0));
panel.add(getPanelInt(),BorderLayout.SOUTH);
setContentPane(panel);

jscrollPane = new JScrollPane();
jTable = new JTable();
    jTable.setAutoCreateRowSorter(true);
        jTable.setRowSorter(sorter);
jTable.setModel(tableModel);
       
jscrollPane.setViewportView(jTable);
    jscrollPane.setPreferredSize(new Dimension (400,400));
panel.add(jscrollPane,BorderLayout.NORTH);
this.setLocationRelativeTo(null);
this.setVisible(true);

}
public JPanel getPanelInt (){
JPanel pInt = new JPanel();
pInt.setLayout(new GridLayout(1,0));
filtro = new JTextField(1){
   @Override
   protected void fireCaretUpdate(CaretEvent arg0) {
    try {
           rf = RowFilter.regexFilter(filtro.getText(), cbColumna.getSelectedIndex());
       } catch (java.util.regex.PatternSyntaxException e) {
           return;
       } sorter.setRowFilter(rf);
    super.fireCaretUpdate(arg0);
   }
  };
  pInt.add(new JLabel("Texto filtro: "));
  pInt.add(filtro);
  pInt.add(new JLabel("Columna filtro: "));
  pInt.add(cbColumna);
  pInt.setBorder(BorderFactory.createEmptyBorder(15,15,0,0));

  return pInt;     
}


}
Verás otro panel que he creado, para que se vean mejor la lista y el textfield y jcomobox, te adjunto una imagen de la ventana.

3
Java JSE / Re: Buscar en hashtable
« on: Septiembre 03, 2012, 05:56:49 pm »
Vale mira la ventana ya me sale y me salen la lista de coches que tengo y el textfield y el jcomobox, el problema en si, es que no filtra, cuando selecciono una columna y le pongo algo en el textfield para que me filtre esa columna no me hace nada, entonces no se si es porque leo desde un tablemodel que esta hecho con datos de un hashtable y no son datos metidos a mano por lo que no actua sobre la tabla o yo que se. Te pongo el codigo que funciona que he cambiado unas cuantas cosas:

Code: [Select]
public class BusquedaCoches extends javax.swing.JDialog{

private static final long serialVersionUID = 1L;
public JPanel panel;
public JScrollPane jscrollPane;
public JTable jTable;
public TableModel tableModel;
public TableRowSorter<TableModel> sorter  = new TableRowSorter<TableModel>(tableModel);
public RowFilter<TableModel, Object> rf = null;
JTextField filtro ;
JComboBox cbColumna = new JComboBox(new String[] {"Matricula","Marca","Modelo","Clase","Tipo Motor"});


//Metodo constructor que nos inicializa la ventana secundaria listado.
public BusquedaCoches() {
setBounds(500, 500, 550, 550);
panel = new JPanel();
panel.setBorder(new EmptyBorder(5,5,5,5));
panel.setLayout(new BorderLayout(1, 0));
setContentPane(panel);

jscrollPane = new JScrollPane();
jTable = new JTable();
jTable.setSize(350,300);
tableModel = new ListaCoches("");
    jTable.setAutoCreateRowSorter(true);
        jTable.setRowSorter(sorter);

jTable.setModel(tableModel);
       
jscrollPane.setViewportView(jTable);
    jscrollPane.setPreferredSize(new Dimension (400,70));
panel.add(jscrollPane,BorderLayout.NORTH);
this.setLocationRelativeTo(null);
this.setVisible(true);
JPanel pInt = new JPanel();
pInt.setLayout(new GridLayout(2,0));
pInt.setBorder(new EmptyBorder(100,100,100,100));
filtro = new JTextField(15){
   @Override
   protected void fireCaretUpdate(CaretEvent arg0) {
    try {
           rf = RowFilter.regexFilter(filtro.getText(), cbColumna.getSelectedIndex());
       } catch (java.util.regex.PatternSyntaxException e) {
           return;
       } sorter.setRowFilter(rf);
    super.fireCaretUpdate(arg0);
   }
  };
  pInt.add(new JLabel("texto filtro: "));
  pInt.add(filtro);
  pInt.add(new JLabel("Columna filtro: "));
  pInt.add(cbColumna);
  pInt.setBorder(BorderFactory.createEmptyBorder(15,15,0,0));

  panel.add(pInt);     
}


}
Espero tu respuesta y gracias por todo.

4
Java JSE / Re: Buscar en hashtable
« on: Septiembre 03, 2012, 01:14:50 am »
pues mira tengo echo una lista de todos los coches pero cuando le meto lo de jTable.setAutoCreateRowSorter(true) y jTable.setRowSorter(tableModel); me desaparecen los coches de la lista. te pongo el codigo:

Code: [Select]
private static final long serialVersionUID = 1L;
public JPanel panel;
public JScrollPane jscrollPane;
public JTable jTable;
public TableModel tableModel;



//Metodo constructor que nos inicializa la ventana secundaria listado.
public BusquedaCoches() {
setBounds(100, 100, 450, 300);
panel=new JPanel();
panel = new JPanel();
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
panel.setLayout(new BorderLayout(0, 0));
setContentPane(panel);



jscrollPane = new JScrollPane();
jTable = new JTable();
tableModel = new ModeloListadoVehiculos("");
jTable.setModel(tableModel);
        jscrollPane.setViewportView(jTable);
       

panel.add(jscrollPane,BorderLayout.CENTER);
this.setLocationRelativeTo(null);
this.setVisible(true);



}

}
Esto me crea una ventana en donde sale una tabla con todos los coches, pero en cuanto intento tocar lo de ordenar y lo del filtro no se me cargan y desaparecen cuando la ejecuto, mira a ver si puedes orientarme de como tengo que implementarlo para que me funcione y claro me aparezca el filtro por el TextField y la eleccion de la columna, del enlace que me pusiste, que he estado probando y nada no hay cojo.... a que vaya, gracias por todo de verdad.

5
Java JSE / Re: Buscar en hashtable
« on: Agosto 30, 2012, 06:45:52 pm »
Mira te digo, lo del tableModel es que tengo implementado la tabla de todos los coches con 5 columnas ,matricula, marca, modelo, clase, tipomotor. Esto esta implementado ya y funciona me pone la lista de todos los coches que tengo en un table model.
Lo que estoy intentando hacer ahora es que en una ventana que me sale cuando le doy a buscar coche pueda a través de poner una marca que me salgan todos los coches que tengan esa marca y sus atributos en el tablemodel que e puesto en la parte de abajo. El principal problema es ese que he comentado que la key del hashtable es la matricula entonces no se si le podria cambiar la key al hash table en esta clase para que en vez de ser la matricula sea lo que yo quiera, sin que se produzcan errores en las otras clases por cambiar la key, o tambien he pensado añadirle mas de una key, que no se si se podrá, y asi ponerle la que voy a utilizar en esta clase.

6
Java JSE / Re: Buscar en hashtable
« on: Agosto 30, 2012, 12:21:15 am »
Supuestamente, corregidme si me equivoco la busqueda en un hashtable se tiene que hacer con la key que le has puesto al hashtable no?, es que me gustaria hacer la busqueda por la clase de coche en vez de por la matricula, no se si se podrá, alguien lo sabe?.

7
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.

8
Java JSE / Re: Problema con NullPointerExcepcion
« on: Agosto 29, 2012, 08:24:54 pm »
Ya lo solucione era que en el metodo donde llamaba a la ventana para que se ejecutara habia puesto el nombre mal y claro pos daba null.
Es que esto del java la minima cosa que no tengas bien da fallo, gracias por todo me a servido de mucha ayuda, ya pondre algun fallo mas seguro porque me queda aun algo por hacer,

9
Java JSE / Re: Problema con NullPointerExcepcion
« on: Agosto 27, 2012, 06:34:56 pm »
Te pongo el codigo donde tengo hecho como elimino un coche:

Code: [Select]
public class BorrarCoche extends JDialog implements ActionListener {

/**
*
*/
private static final long serialVersionUID = 1L;

public JComboBox coche = new JComboBox();

//Metodo constructor que nos inicializa la ventana secundaria.

public BorrarCoche() {

this.setLocationRelativeTo(null);
this.setTitle("Borrar Coche");
this.setContentPane(getPanelPrincipal());
this.setModal(true);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);

}


//Panel principal que contendra el panel de campos y el panel del boton a�adir

private JPanel getPanelPrincipal(){
JPanel panelPrincipal = new JPanel();
panelPrincipal.setLayout(new BorderLayout());
panelPrincipal.add(getPanelEliCoche(),BorderLayout.CENTER);
panelPrincipal.add(getPanelEliCocheBoton(),BorderLayout.SOUTH);
panelPrincipal.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

return panelPrincipal;
}

//Panel de Campos (NORTE)

public JPanel getPanelEliCoche(){

JPanel panelEliCoche = new JPanel();
panelEliCoche.setLayout(new GridLayout(0,2));
panelEliCoche.add(new JLabel("Matricula"));
panelEliCoche.add(getCampoCoche());
panelEliCoche.setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
return panelEliCoche;
}


public JComboBox getCampoCoche() {

GestionarCoche gC = new GestionarCoche();
Hashtable hashCoches = gC.reCargar();

for(Enumeration e = hashCoches.keys(); e.hasMoreElements();){

    Object obj = e.nextElement();
   
coche.addItem(obj);

}

return coche;

}

//Panel del Boton agregar con el mismo incluido (SUR)

public JPanel getPanelEliCocheBoton(){

JPanel panelEliCocheBoton = new JPanel();
JButton botonEliminar = new JButton("Borrar Coche");
panelEliCocheBoton.setLayout(new GridLayout(1,1));
panelEliCocheBoton.add(botonEliminar);


ActionListener listener = new ActionListener(){

public void actionPerformed(ActionEvent e) {

String matricula = coche.getSelectedItem().toString();
          int confirmado = JOptionPane.showConfirmDialog(null,"¿Deseas borrar el coche "+matricula+"?","Borrar coche" ,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (JOptionPane.OK_OPTION == confirmado){
                 GestionarCoche.borrarDelFichero(matricula);
}
     }
      };
 
      botonEliminar.addActionListener(listener);

return panelEliCocheBoton;

}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}


}

Lo unico que se me ocurre es que no me detecte el hashtable y por eso dice que esta vacio, pero miro el nombre y es el mismo que tengo en los demas sitios.
Utilizo la matricula para seleccionar el coche que quiero borrar. A ver si encuentras algo, porque yo no veo nada y estoy comparando con otras clases que tambien utilizan el hash y mas o menos esta igual implementado.

10
Java JSE / Re: Problema con NullPointerExcepcion
« on: Agosto 26, 2012, 08:08:27 pm »
Muchas gracias ya encontre el fallo es que en el archivo propiedades tenia puesto clases= berlina todoterreno .... y en el codigo clase entonces no encontraba el string de las clases , muchas gracias de verdad, ahora me toca seguir probando que seguro que habra algun fallo por hay mas.

A ver si me puedes echar una mano tambien con este fallo pulso un boton que me tiene que salir una ventana y me sale en la consola esto: Marca: nullModelo :nullEspecificaciones: [] nada mas y claro no sale la ventana, supuestamente el boton es de eliminar de un hashtable un objeto y no se porque sale eso de null porque el hash contiene coches. A ver si sabes que puedo hacer, gracias.

11
Java JSE / Re: JMenuBar dentro de un Panel
« on: Agosto 26, 2012, 02:33:55 am »
Hola

Si estás poniendo un BoxLayout vertical y el primer elemento que añade es es el menú, saldrá arriba del todo. ¿Has probado a añadirlos en el mismo orden que los quieres según tu dibujo?

Se bueno.

Cierto eso tambien te puede valer, con el orden en el que le metes las cosas a la ventana.

12
Java JSE / Re: Problema con NullPointerExcepcion
« on: Agosto 26, 2012, 02:31:29 am »
Si mira precisamente e puesto en rojo las lineas donde me da el fallo tanto el primero como los demas

Code: [Select]
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(" ");     ----> En esta linea es donde me da el primer fallo


El tema es que no se donde esta el fallo en la linea, lo veo todo bien y eso es lo que me esta matando, porque no se que es lo que no esta funcionando. A ver si se os ocurre algo que de el error.
El siguente fallo es el que esta justo antes del que te he dicho y el siguente antes de éste y asi.

13
Java JSE / Re: JMenuBar dentro de un Panel
« on: Agosto 25, 2012, 11:43:51 pm »
yo lo tengo asi:

public PanelPrincipal(){
            this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
            this.add(barraMenu.Menu());
                                this.add(getPanelNorte());
            this.add(getPanelSur());
            this.setBackground(Color.lightGray);
            this.setBorder(BorderFactory.createLineBorder (Color.darkGray));
         }


Habiendo declarado barraMenu variable global de JMenuBar(), osea:

private BarraMenu barraMenu = new JMenuBar ();

no se si te servirá.

Saludos.

14
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