JavaFX FXML Controller initialize method not invoked

前端 未结 3 983
梦毁少年i
梦毁少年i 2021-01-18 04:33

I am trying to fill ListView from the content of a simple ArrayList. Here is my

Controller.java file:

package design;
import java.net.URL;
import jav         


        
相关标签:
3条回答
  • 2021-01-18 04:56

    I needed to implement Initializable to the class and add an @Override before calling the method.

    0 讨论(0)
  • 2021-01-18 05:05

    If I see correctly, you actually don't use the URL and the ResourceBundle parameters in you initialize() method. If the URL is the path to your fxml file, and the ResourceBundle contains internatonalization properties for your GUI, then you should define your initialize() method without parameters, but annotated with @FXML. The URL and the ResourceBundle should be passed to the FXMLLoader.

    Like

    FXMLLoader loader = new FXMLLoader(URL, rb);
    

    and

    @FXML
    private void initialize() { ... }
    

    This way initialize() will be automatically invoked.

    0 讨论(0)
  • 2021-01-18 05:14

    The issue was that the Controller's wasn't being initialized as the asker of the question expected.

    The operation of the FXMLLoader in Java 8 is a little weird.

    1. If you define a no-parameter initialize() method in your Controller and don't implement the Initializable interface, then the FXML loader will still automatically invoke the initialize method.

    2. If instead, you define a parameterized public void initialize(URL url, ResourceBundle rb) method in your Controller, then the FXML loader will not automatically invoke the initialize method unless your controller also implements the Initializable interface.

    As the code in the question was using a parameterized initialize method and not also implementing Initializable, the initialization was not occurring.

    0 讨论(0)
提交回复
热议问题