ListView Javafx e atualização de dados

Pessoal,
Já olhei vários posts relacionados e eles até dizem como fazer, mas não da certo pra mim. Não sei mais o que fazer… queria entender o motivo de tanto problema no meu código. É um programa pra registrar carros e fazer o gerenciamento (ainda to na parte de registrar carros).
Quando vou cadastrar um carro, vou pra tela de cadastro e tem:

Inicia a tela de cadastro setando uma ListView de carros e se eu clicar em algum carro da lista, mostra ao lado vários campos em TextField dos atributos deste Veiculo E seta o veiculo selecionado como selectedItem

[code]@Override
public void initialize(URL url, ResourceBundle rb) {
listaCarros.setItems(MenuController.listaCarroEmExecucao);
listaCarros.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue<? extends Veiculo> ov, Veiculo t, Veiculo t1) {
modeloTxtField.setText(t1.getModelo());
placaTxtField.setText(t1.getPlaca());
modeloAnoTxtField.setText(String.valueOf(t1.getModeloAno()));
economiaTxtField.setText(String.valueOf(t1.getEconomia()));
marcaTxtField.setText(t1.getMarca());
combustivelTxtField.setText(t1.getCombustivel());
chassiTxtField.setText(t1.getChassi());
selectedItem = listaCarros.getSelectionModel().getSelectedItem();

        }
    });
}[/code]

Meu problema ta sendo salvar a lista e atualizar a ListView, salvar até to conseguindo, mas atualizar já fiz todos os métodos daqui e ele não atualiza. Exemplo: crio um carro como nome “NOVO”, peço pra alterar o nome para “Carro1” e salvar no botão salvarBotao, mas ele salva o dado entretanto não atualiza a lista com o novo nome.

[code]
public void salvarButton(ActionEvent clickEvent) {

    selectedItem.setChassi(chassiTxtField.getText());
    selectedItem.setCombustivel(combustivelTxtField.getText());
    selectedItem.setEconomia(Double.valueOf(economiaTxtField.getText()));
    selectedItem.setMarca(marcaTxtField.getText());
    selectedItem.setModelo(modeloTxtField.getText());
    selectedItem.setModeloAno(Integer.valueOf(modeloAnoTxtField.getText()));
    selectedItem.setPlaca(placaTxtField.getText());
    try {
        GravacaoDeDados.reescreverBDComAlteracoes(MenuController.LIST_FILE, MenuController.listaCarroEmExecucao);
    } catch (IOException ex) {
        Logger.getLogger(CadastrarVeiculoController.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    listaCarros.getItems().clear();
          listaCarros.getItems().addAll(MenuController.listaCarroEmExecucao);
}[/code]

Os botoes novoBotao e deletarBottoao, funcionam normalmente adicionando carros e deletando e atualizando na ListView. Outra questão é se vocês sabem me dizer porque está jogando uma exceção,AS VEZES, a qual nem sei identificar, quando clico no obtão salvar.

Executing com.javafx.main.Main from C:\Users\Home\Documents\NetBeansProjects\Controle de Frota\dist\run1067101955\Controle de Frota.jar using platform C:\Program Files\Java\jdk1.7.0_21/bin/java java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1440) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28) at javafx.event.Event.fireEvent(Event.java:171) at javafx.scene.Node.fireEvent(Node.java:6863) at javafx.scene.control.Button.fire(Button.java:179) at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193) at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336) at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33) at javafx.event.Event.fireEvent(Event.java:171) at javafx.scene.Scene$MouseHandler.process(Scene.java:3328) at javafx.scene.Scene$MouseHandler.process(Scene.java:3168) at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3123) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1563) at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2265) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292) at com.sun.glass.ui.View.handleMouseEvent(View.java:528) at com.sun.glass.ui.View.notifyMouse(View.java:922) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435) ... 48 more Caused by: java.lang.NullPointerException at controle.de.frota.CadastrarVeiculoController$1.changed(CadastrarVeiculoController.java:78) at controle.de.frota.CadastrarVeiculoController$1.changed(CadastrarVeiculoController.java:75) at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:196) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:100) at javafx.beans.property.ReadOnlyObjectWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(ReadOnlyObjectWrapper.java:195) at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:161) at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:130) at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:163) at javafx.scene.control.SelectionModel.setSelectedItem(SelectionModel.java:101) at javafx.scene.control.MultipleSelectionModelBase$1.invalidated(MultipleSelectionModelBase.java:65) at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:155) at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:100) at javafx.beans.property.ReadOnlyIntegerWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(ReadOnlyIntegerWrapper.java:195) at javafx.beans.property.ReadOnlyIntegerWrapper.fireValueChangedEvent(ReadOnlyIntegerWrapper.java:161) at javafx.beans.property.IntegerPropertyBase.markInvalid(IntegerPropertyBase.java:130) at javafx.beans.property.IntegerPropertyBase.set(IntegerPropertyBase.java:163) at javafx.scene.control.SelectionModel.setSelectedIndex(SelectionModel.java:67) at javafx.scene.control.ListView$ListViewBitSetSelectionModel$1.onChanged(ListView.java:927) at com.sun.javafx.scene.control.WeakListChangeListener.onChanged(WeakListChangeListener.java:71) at com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:291) at com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:48) at com.sun.javafx.collections.ObservableListWrapper.callObservers(ObservableListWrapper.java:97) at com.sun.javafx.collections.ObservableListWrapper.clear(ObservableListWrapper.java:184) at controle.de.frota.CadastrarVeiculoController.salvarButton(CadastrarVeiculoController.java:124) ... 58 more

Sinceramente, já li toda a classe listview, focusmodel e selectionmodel e não acho uma solução… Não entendo porque ele aponta null, eh como se o veiculo não tivesse sido selecionado. Quando clico na listview o item fica azul, mas quando clico nos espaços que quero modificar os atributos do item selecionado ele fica cinza, isso é por não usar o focusmodel? Queria entender como se utiliza dessa classe. A lógica do meu programa está certa? Me da uma luz. Esse to tentando achar esse item q tu ta dizendo que aponta para null, mas não encontro… Meu problema ta sendo principalmente é pegar os atributos de textfield e setar os atributos do veiculo que está na listview com eles pelo botao salvar e atualizar o nome do item q ta na listview… Aghhhh /:

Sua stackTrace está trazendo uma informação importante que você deve verificar:

Caused by: java.lang.NullPointerException at controle.de.frota.CadastrarVeiculoController$1.changed(CadastrarVeiculoController.java:78) at controle.de.frota.CadastrarVeiculoController$1.changed(CadastrarVeiculoController.java:75) //...traces que você não poderá alterar at controle.de.frota.CadastrarVeiculoController.salvarButton(CadastrarVeiculoController.java:124)
Separei aqui apenas as classes que julgo serem de teu código e, há um indicativo de que algo está nulo, vindo ou do botão salvar ou de uma innerclass em CadastrarVeiculoController (na linha 78 ).

Verifique por depuração se há algo nulo aqui para poder continuar a análise