Scene Builder JavaFX

Galera seguinte, ainda não entendi bem, como ter acesso aos componentes criados com o Scene Builder (FXML). Tem como alguém me dar um exemplo bem simples (Tipo só um botão que tenha um evento)? Eu sei que tem que usar a interface Initializable, e marcar com a anotação @FXML nos componentes tendo um id definido com os mesmos nomes. Mas não consegui fazer funcionar.

Primeiro você vai no Scene Builder e seta os ids dos componentes.
Depois vá até o seu controller e marque com @FXML os componentes do seu FXML.
Agora é só utilizar normalmente como uma variável qualquer.

Por exemplo, um botão de cancelar (fechar a janela).

    @FXML
    private Button botaoCancelar;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        botaoCancelar.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent t) {
                Stage stage = (Stage) botaoCancelar.getScene().getWindow();
                stage.close();
            }
        });
    }

Não sei se foi essa a sua pergunta.

Era isso isso sim. Porém, eu tenho que criar outra classe que implementa Initializable, ou posso implementar já na minha classe que herda de Application?

Bom, se você estiver utilizando o Netbeans, há a opção de criar a classe controller automaticamente (a classe que implementa Initializable). Por exemplo, tenho um arquivo FXML que se chama TelaPrincipal.fxml e tenho uma classe controller que se chama TelaPrincipalController.java . Esse classe que herda Application, eu uso para carregar a tela principal. Por exemplo:

[code]public class MainApp extends Application {

private static Stage primaryStage;

public static final String TELA_PRINCIPAL = "/br/com/st/monteseutreino/view/TelaPrincipal.fxml";
public static final String TELA_CADASTRAR_EXERCICIO = "/br/com/st/monteseutreino/view/CadastrarExercicio.fxml";
public static final String TELA_EDITAR_EXERCICIO = "/br/com/st/monteseutreino/view/EditarExercicio.fxml";
public static final String TELA_GERAR_PDF = "/br/com/st/monteseutreino/view/GerarPDF.fxml";

@Override
public void start(Stage stage) throws Exception {

    Parent root = FXMLLoader.load(getClass().getResource(TELA_PRINCIPAL));
    Scene scene = new Scene(root);

    setPrimaryStage(stage);

    stage.setResizable(true);
    stage.setScene(scene);
    stage.setResizable(false);
    stage.sizeToScene();

    stage.show();
}

/**
 * The main() method is ignored in correctly deployed JavaFX application.
 * main() serves only as fallback in case the application can not be
 * launched through deployment artifacts, e.g., in IDEs with limited FX
 * support. NetBeans ignores main().
 *
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

public static void setPrimaryStage(Stage stage) {
    MainApp.primaryStage = stage;
}

public static Stage getPrimaryStage() {
    return MainApp.primaryStage;
}

}[/code]