Duvida JavaFX Informação entre telas

Bem eu estou tentando passar informação entre duas telas abertas,
essa é a primeira tela(a de traz, desculpa só posso enviar 1 imagem)


quando eu aperto no botao abre a tela que esta na frente a menorzinha

quando eu seleciona-se o responsavel era para eu apertar “pronto” e o nome do responsavel ia aparecer na text field “responsavel” da tela de traz; porem nao funciona e da esse erro:

  1. jul 02, 2019 5:19:44 PM javafx.scene.CssStyleHelper calculateValue

  2. WARNING: Caught ‘java.lang.ClassCastException: class java.lang.String cannot be cast to class javafx.scene.paint.Paint (java.lang.String is in module java.base of loader ‘bootstrap’; javafx.scene.paint.Paint is in module javafx.graphics of loader ‘app’)’ while converting value for ‘-fx-background-color’ from inline style on AnchorPane@5b7451b8

  3. Exception in thread “JavaFX Application Thread” java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

  4. at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)

  5. at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)

  6. at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)

  7. at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)

  8. at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)

  9. at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)

  10. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)

  11. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  12. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

  13. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  14. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

  15. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  16. at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)

  17. at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)

  18. at javafx.base/javafx.event.Event.fireEvent(Event.java:198)

  19. at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8879)

  20. at javafx.controls/javafx.scene.control.Button.fire(Button.java:200)

  21. at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:206)

  22. at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)

  23. at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)

  24. at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)

  25. at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)

  26. at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)

  27. at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)

  28. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)

  29. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  30. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

  31. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  32. at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

  33. at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

  34. at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)

  35. at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)

  36. at javafx.base/javafx.event.Event.fireEvent(Event.java:198)

  37. at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3851)

  38. at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1200(Scene.java:3579)

  39. at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1849)

  40. at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2588)

  41. at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397)

  42. at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)

  43. at java.base/java.security.AccessController.doPrivileged(Native Method)

  44. at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434)

  45. at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:390)

  46. at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433)

  47. at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)

  48. at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)

  49. at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

  50. at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)

  51. at java.base/java.lang.Thread.run(Thread.java:834)

  52. Caused by: java.lang.reflect.InvocationTargetException

  53. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  54. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

  55. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  56. at java.base/java.lang.reflect.Method.invoke(Method.java:566)

  57. at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)

  58. at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)

  59. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  60. at java.base/java.lang.reflect.Method.invoke(Method.java:566)

  61. at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)

  62. at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)

  63. at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1782)

  64. … 47 more

  65. Caused by: java.lang.NullPointerException

  66. at scout.tcc.controladores.ControladorCadastroJogador.pegarResponsavel(ControladorCadastroJogador.java:311)

  67. at scout.tcc.controladores.ControladorTelaPesquisaRespon.clickConfirmarSele(ControladorTelaPesquisaRespon.java:84)

  68. … 58 more

o codigo da tela da primeira tela esta aki https://pastebin.com/49KcPgZh, da segunda tela aki (a menor) https://pastebin.com/LNWMU0SA

Bom primeiramente é melhor você criar um classe controller que controla as atribuições dentro do javafx pois assim fica mais fácil de até mesmo de você visualizar e procurar erros no seu código e colocaria um FXML que cria a tela e chamaria ele em uma classe. Para resolver este problema de passar atributo para uma outra classe cria um método (estático ou privado) e passa o objeto e depois instanciar na classe comtroller o método get e setar o valor no textfield ou no label

Nao entendi bem, pode explicar melhor

Criaria uma FXML com a estrutura.Se você utiliza o netbeans é mais fácil pois você vai na opção javafx criar fxml vazio e lá você seta o controller.E uma classe principal pra montar a tela.Até aqui entendeu?

mano eu to usando controllers …

Bom então na classe principal que você monta a tela adiciona metodos getters e setter do objeto(no caso String) e depoia instancia ele na classe controller e seta o valor recebido num label

a questao é que nao é possivel Instanciar um controller ou usar static para pegar coisas de la

o javafx nao deixa

De outro controller não da mas outra classe sim.ex:
Dentro da classe controller e instancio a classe e o objeto.

ClasseTeste classeTeste= new ClasseTeste();
Strinh valor = classeTeste.getObjeto();

ué eu tentei instanciar na classe main e nao deu

Ola pessoal,

As classes de loading das fxmlloaders sao carregadas em tempo de execução… então não se deve instanciar essas classes… ja que seus atributos serão nulos…

Porém cada classe de controller que instancie Initializable recebe um metodo de tempo de construção… vamos a um exemplo rapido, espero que ajude alguem.

public class Controller extends Initializable  {

    public static Controller INSTANCE;

    @Override
    public void initialize(URL location, ResourceBundle resources)  {
        INSTANCE = this;
    }
}

Na outra classe

public class OtherClass {

    Controller controller = Controller.INSTANCE;

}