Passagem Parâmetro em Telas em JavaFx

Bom dia a Todos.
Tenho um formulário de cadastro de cliente com um textField e um botão que abre um formulário de pesquisar cliente. Ao finalizar a consulta, fecho a tela de consulta e envio o resultado para o método initialize do 1º formulário que se encontrava aberto, isso através do ResourceBundle. Até ai tudo bem, no console eu imprimo o valor da consulta. Mas não consigo setar esse valor no textField. Ou seja, acredito que dever ter uma maneira de atualizar essa tela.
Esse método initialize é do form1 que já estava aberto e recebe o valor vindo do form2, que foi fechado. Repetindo, no console imprime o valor certo, mas o textField não aparece o valor.

@Override
    public void initialize(URL url, ResourceBundle rb) {
        
        if (rb != null) {
            
            txtCliente.setText(rb.getString("NomeCliente"));

            System.out.println(rb.getString("NomeCliente"));
            
        }

    }

Isso é bem simples;
Baixa esse Zip, e veja no Main.java

controller.setApplication(this);

Esse metodo pode ter qualquer nome e nele voce passa a referencia do programa principal.

Então dentro do Controller terá acesso geral a qualquer instancia ou objeto do seu sistema.

Bons Codigos

1 curtida

Boa tarde.
Eu tentei adaptá-lo ao meu código mas não consegui.
Na verdade eu estou criando um sistema de controle de estoque, venda etc, pra uso pessoal mesmo. Vou postar os código que exemplifica meu problema.
Através do método initialize da Classe CadastroClienteControle eu consigo receber o valor vindo do outro controler e imprimir no consome, mas no textField ele não seta o valor, tipo não atualiza o textField. Na minha tela de cadastro eu tenho outros textField já preenchido, ai se abrir outra tela eu perco o que ja preenchido.

ClassePrincipal

public class ClassePrincipal extends Application {

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

        Parent paginaPrincipal = FXMLLoader.load(getClass().getResource("/visao/CadastroCliente.fxml"));

        Scene scene = new Scene(paginaPrincipal);

        stage.setScene(scene);

        stage.setResizable(false);

        stage.setTitle("Cadastro de Clientes");

        stage.show();

    }

    public static void main(String[] args) {

        launch(args);

    }

}

CadastroClienteControle

public class CadastroClienteControle implements Initializable {

    ClienteModelo clienteModelo;

    Date data = new Date();

    SimpleDateFormat data1 = new SimpleDateFormat("dd/MM/yyyy");

    @FXML
    private AnchorPane anchorPaneCadastroCliente;

    @FXML
    private TextField txtData;

    @FXML
    private TextField txtCliente;

    @FXML
    private Button btnPesquisar;

    @FXML
    void btnPesquisarAction(ActionEvent event) throws IOException {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/PesquisarCliente.fxml"));

        AnchorPane root = fxmlLoader.load();

        Scene scene = new Scene(root);

        Stage stage = new Stage();

        stage.setTitle("Pesquisar Cliente");

        stage.setScene(scene);

        stage.setResizable(false);

        stage.initModality(Modality.APPLICATION_MODAL);

        stage.show();

    }

    public void setCliente(ClienteModelo clienteModelo) {

        this.clienteModelo = clienteModelo;

        txtCliente.setText(clienteModelo.getCliente());

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        if (rb != null) {

            txtCliente.setText(rb.getString("NomeCliente"));
            
            System.out.println(rb.getString("NomeCliente"));            

        }

        txtData.setText(data1.format(data));

    }

}

PesquisarClienteControle

public class PesquisarClienteControle implements Initializable {

    ClienteModelo clienteModelo;

    ClienteDao clienteDao;

    @FXML
    private AnchorPane anchorPanePesquisarCliente;

    @FXML
    private TextField txtPesquisarCliente;

    @FXML
    private TableView<ClienteModelo> tblCliente;

    @FXML
    private TableColumn<ClienteModelo, String> clmCliente;

    private ObservableList<ClienteModelo> observableListaDeCliente = FXCollections.observableArrayList();

    @FXML
    void tblClienteAction(MouseEvent event) throws IOException {

        if (event.getClickCount() == 2) {

            getCliente();

            //final Stage stage = new Stage();
            ResourceBundle rb = new ResourceBundle() {

                @Override
                protected Object handleGetObject(String key) {

                    if (key.contains("NomeCliente")) {

                        return clienteModelo.getCliente();

                    } else {

                        return null;

                    }

                }

                @Override
                public Enumeration<String> getKeys() {

                    return null;

                }

            };

            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"), rb);

            Parent parent = (Parent) fxmlLoader.load();

            //CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();
            //fxmlLoader.setController(cadastroClienteControle);
            //Scene scene = new Scene(parent);
            //stage.setScene(scene);
            //stage.show();
            
            final Stage stage = (Stage) txtPesquisarCliente.getScene().getWindow();

            stage.close();

            //cadastroClienteControle.setCliente(clienteModelo);
            
        }

    }

    private ObservableList<ClienteModelo> carregarTabelaCliente() {

        try {

            clienteDao = new ClienteDao();

        } catch (SQLException ex) {

            Logger.getLogger(PesquisarClienteControle.class.getName()).log(Level.SEVERE, null, ex);

        }

        observableListaDeCliente = FXCollections.observableArrayList(clienteDao.listarCliente());

        return observableListaDeCliente;

    }

    private void getCliente() {

        clienteModelo = tblCliente.getSelectionModel().getSelectedItem();

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        clmCliente.setCellValueFactory(new PropertyValueFactory<ClienteModelo, String>("Cliente"));

        tblCliente.setItems(carregarTabelaCliente());

    }

}

Se voce deseja que Eu ou alguem reproduza o seu codigo precisa colocar o programa com tudo que for necessario.
Onde estão os arquivos .fxml?

Sugiro voce criar um exemplo simples onde fique nitido esse seu problema.

Mas se voce notar com calma o que Eu já respondi vai ver que resolve sua questão.

Em cada Controller voce precisa criar um metodo setApplication

FXMLLoader fxml = new FXMLLoader( getClass().getResource(“Sample.fxml”) );

exemplo

FXMLLoader fxml = new FXMLLoader( getClass().getResource("Sample.fxml") );
AnchorPane root= (AnchorPane)fxml.load();			
SampleController controller = fxml.getController();  // <--- Obtem o Controller
controller.setApplication(this);  // <--- aqui vai o seu Programa principal dentro do Controller
1 curtida

Boa noite, essas são as Classes que Faltava.

ClienteDao

public class ClienteDao {

    private final Connection connection;

    private Statement st = null;

    public ResultSet rs = null;

    public ClienteDao() throws SQLException {

        this.connection = new ConnectionFactory().getConnection();

    }
    
    public List<ClienteModelo> listarCliente() {

        String sql = "select * from CadastroCliente order by nomeCliente";

        List<ClienteModelo> cliente = new ArrayList<>();

        try {

            PreparedStatement ps = connection.prepareStatement(sql);

            rs = ps.executeQuery();

            while (rs.next()) {

                ClienteModelo clienteModelo = new ClienteModelo();
              
                clienteModelo.setCliente(rs.getString("nomeCliente"));                

                cliente.add(clienteModelo);

            }

        } catch (SQLException ex) {

            //Logger.getLogger(ClienteDao.class.getName()).log(Level.SEVERE, null, ex);
            //JOptionPane.showMessageDialog(null, "Erro ao Adicionar");
        }

        return cliente;

    }

}

ClienteModelo

public class ClienteModelo {
    
    private String Data;
    
    private String Cliente;

    public ClienteModelo() {
        
    }

    public ClienteModelo(String Data, String Cliente) {
        
        this.Data = Data;
        
        this.Cliente = Cliente;
        
    }

    public String getData() {
        
        return Data;
        
    }

    public void setData(String Data) {
        
        this.Data = Data;
        
    }

    public String getCliente() {
        
        return Cliente;
        
    }

    public void setCliente(String Cliente) {
        
        this.Cliente = Cliente;
        
    }
        
}

ConnectionFactory

public class ConnectionFactory {
    
    private final String driver = "org.postgresql.Driver";
    
    private final String URL = "jdbc:postgresql://localhost:5432/SisLoja";
    
    private final String USUARIO = "postgres";
            
    private final String SENHA = "123";
    
    public Connection getConnection() throws SQLException {
        
        try {
            
            Class.forName(driver);
            
            //JOptionPane.showMessageDialog(null, "Conectado");
            
            return DriverManager.getConnection(URL, USUARIO, SENHA);
            
        } catch (SQLException | ClassNotFoundException ex) {
            
            throw new RuntimeException(ex);            
            
        }
        
    }
    
}

CadastroCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" fx:id="anchorPaneCadastroCliente" prefHeight="300.0" prefWidth="370.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controle.CadastroClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Data" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtData" focusTraversable="false" layoutX="14.0" layoutY="31.0" prefHeight="25.0" prefWidth="75.0" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="31.0" />
      <Label layoutX="96.0" layoutY="14.0" text="Cliente" AnchorPane.leftAnchor="94.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtCliente" disable="true" layoutX="96.0" layoutY="31.0" prefHeight="25.0" prefWidth="150.0" AnchorPane.leftAnchor="94.0" AnchorPane.topAnchor="31.0" />
      <Button fx:id="btnPesquisar" layoutX="257.0" layoutY="31.0" mnemonicParsing="false" onAction="#btnPesquisarAction" text="Pesquisar Cliente" AnchorPane.leftAnchor="249.0" AnchorPane.topAnchor="31.0" />
   </children>
</AnchorPane>

PesquisarCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" fx:id="anchorPanePesquisarCliente" prefHeight="281.0" prefWidth="278.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controle.PesquisarClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Pesquisar" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <Label layoutX="26.0" layoutY="31.0" text="Cliente" AnchorPane.leftAnchor="24.0" AnchorPane.topAnchor="41.0" />
      <TextField fx:id="txtPesquisarCliente" layoutX="65.0" layoutY="37.0" prefHeight="25.0" prefWidth="198.0" AnchorPane.leftAnchor="66.0" AnchorPane.topAnchor="37.0" />
      <TableView fx:id="tblCliente" layoutX="24.0" layoutY="89.0" onMouseClicked="#tblClienteAction" prefHeight="200.0" prefWidth="250.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="67.0">
        <columns>
          <TableColumn fx:id="clmCliente" prefWidth="75.0" text="Cliente" />
        </columns>
         <columnResizePolicy>
            <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
         </columnResizePolicy>
      </TableView>
   </children>
</AnchorPane>

Boa noite, reproduzi o exemplo do problema com menos código e sem conexão com banco.

ClassePrincipal

public class ClassePrincipal extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"));
        
        AnchorPane paginaPrincipal = fxmlLoader.load();
        
        CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();
        
        cadastroClienteControle.setApplication(this);
        
        Scene scene = new Scene(paginaPrincipal);

        stage.setScene(scene);

        stage.setResizable(false);

        stage.setTitle("Cadastro de Clientes");

        stage.show();

    }

    public static void main(String[] args) {

        launch(args);

    }

}

CadastroClienteControle

public class CadastroClienteControle implements Initializable {

    ClassePrincipal classePrincipal = null;

    @FXML
    private AnchorPane anchorPaneCadastroCliente;

    @FXML
    private TextField txtId;

    @FXML
    private TextField txtCliente;

    @FXML
    private Button btnPesquisar;

    public void setApplication(ClassePrincipal classePrincipal) {

        this.classePrincipal = classePrincipal;

    }

    @FXML
    void btnPesquisarAction(ActionEvent event) throws IOException {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/PesquisarCliente.fxml"));

        AnchorPane root = fxmlLoader.load();
        
        PesquisarClienteControle pesquisarClienteControle = fxmlLoader.getController();
        
        pesquisarClienteControle.setApplication(classePrincipal);

        Scene scene = new Scene(root);

        Stage stage = new Stage();

        stage.setTitle("Pesquisar Cliente");

        stage.setScene(scene);

        stage.setResizable(false);

        stage.initModality(Modality.APPLICATION_MODAL);

        stage.show();

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        if (rb != null) {

            txtCliente.setText(rb.getString("NomeCliente"));

            System.out.println(rb.getString("NomeCliente"));

        }
       
        txtId.setText("01");

    }

}

PesquisarClienteControle

public class PesquisarClienteControle implements Initializable {

    ClassePrincipal classePrincipal = null;

    @FXML
    private AnchorPane anchorPanePesquisarCliente;

    @FXML
    private TextField txtPesquisarCliente;

    @FXML
    private Button btnOk;

    public void setApplication(ClassePrincipal classePrincipal) {

        this.classePrincipal = classePrincipal;

    }

    @FXML
    void btnOkAction(ActionEvent event) throws IOException {

        final Stage stage = (Stage) txtPesquisarCliente.getScene().getWindow();
        ResourceBundle rb = new ResourceBundle() {

            @Override
            protected Object handleGetObject(String key) {

                if (key.contains("NomeCliente")) {

                    return txtPesquisarCliente.getText();

                } else if (key.contains("stage")) {

                    return stage;

                } else {

                    return null;

                }

            }

            @Override
            public Enumeration<String> getKeys() {

                return null;

            }

        };

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"), rb);

        Parent parent = (Parent) fxmlLoader.load();

        CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();

        cadastroClienteControle.setApplication(classePrincipal);
        
        stage.close();

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        txtPesquisarCliente.setText("Junior");

    }

}

CadastroCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane id="AnchorPane" fx:id="anchorPaneCadastroCliente" prefHeight="200.0" prefWidth="328.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="controle.CadastroClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Id" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <Label layoutX="155.0" layoutY="14.0" text="Cliente" AnchorPane.leftAnchor="74.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtId" layoutX="14.0" layoutY="40.0" prefHeight="25.0" prefWidth="50.0" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="41.0" />
      <TextField fx:id="txtCliente" disable="true" layoutX="64.0" layoutY="41.0" prefHeight="25.0" prefWidth="150.0" AnchorPane.leftAnchor="74.0" AnchorPane.topAnchor="41.0" />
      <Button fx:id="btnPesquisar" layoutX="224.0" layoutY="41.0" mnemonicParsing="false" onAction="#btnPesquisarAction" prefHeight="25.0" prefWidth="80.0" text="Pesquisar" AnchorPane.leftAnchor="234.0" AnchorPane.topAnchor="41.0" />
   </children>
</AnchorPane>

PesquisarCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" fx:id="anchorPanePesquisarCliente" prefHeight="80.0" prefWidth="221.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controle.PesquisarClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Cliente" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtPesquisarCliente" layoutX="14.0" layoutY="31.0" prefHeight="25.0" prefWidth="150.0" AnchorPane.topAnchor="41.0" />
      <Button fx:id="btnOk" layoutX="164.0" layoutY="41.0" mnemonicParsing="false" onAction="#btnOkAction" text="OK" AnchorPane.leftAnchor="174.0" AnchorPane.topAnchor="41.0" />
   </children>
</AnchorPane>

Fiz esse outro exemplo, veja se é algo similar a isso que voce quer fazer
JavaFX 21
JDK >= 17

Segue o seu ultimo exemplo.
Em tese funciona assim :

1-Uma Tela principal do Sistema (esse e’ o modulo principal que será visivel para toda fxml ou não, que precisar trocar algumas informações com ele). Essa é uma forma elegante de comunicação total com o sistema.

2-ResourceBundle tem sua utilidade principalmente quando os dados estão em um arquivo de properties, mas usar um objeto DAO no caso, parece ser melhor escolha.

3-Se seu sistema tiver processamento interno em uma Thread separada, no momento de persistir nos Nós do JavaFX nao esqueça de usar o Platform.runLater.

Bom dia, esse método que vc me passou consegui fazer ele funcionar no meu exemplo. Vou utilizar ele no projeto do meu sistema de controle de venda e estoque.
Vou te fazer uma pergunta, nesse exemplo de código que vou que postar, qual é a lógica pra funcionar.

ClassePrincipal

public class ClassePrincipal extends Application {

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

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"));

        AnchorPane paginaPrincipal = fxmlLoader.load();

        Scene scene = new Scene(paginaPrincipal);

        stage.setScene(scene);

        stage.setResizable(false);

        stage.setTitle("Cadastro de Clientes");

        stage.show();

    }

    public static void main(String[] args) {

        launch(args);
    }

}

CadastroClienteControle

public class CadastroClienteControle implements Initializable {
    
    @FXML
    private AnchorPane anchorPaneCadastroCliente;

    @FXML
    private TextField txtId;

    @FXML
    private TextField txtCliente;

    @FXML
    private Button btnPesquisar;

    @FXML
    void btnPesquisarAction(ActionEvent event) throws IOException {
        
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/PesquisarCliente.fxml"));

        AnchorPane root = fxmlLoader.load();

        Scene scene = new Scene(root);

        Stage stage = new Stage();

        stage.setTitle("Pesquisar Cliente");

        stage.setScene(scene);

        stage.setResizable(false);

        stage.initModality(Modality.APPLICATION_MODAL);

        stage.show();

    }
    
    public void setCliente(String cliente) {        

        txtCliente.setText(cliente);
        
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        
        txtId.setText("01");
        
    }
    
}

PesquisarClienteControle

public class PesquisarClienteControle implements Initializable {

    @FXML
    private AnchorPane anchorPanePesquisarCliente;

    @FXML
    private TextField txtPesquisarCliente;

    @FXML
    private Button btnOk;

    @FXML
    void btnOkAction(ActionEvent event) throws IOException {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"));

        Parent parent = (Parent) fxmlLoader.load();

        CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();

        cadastroClienteControle.setCliente(txtPesquisarCliente.getText());

        //fxmlLoader.setController(cadastroClienteControle);
        //Scene scene = new Scene(parent);
        //stage.setScene(scene);
        //stage.show();            
        final Stage stage = (Stage) txtPesquisarCliente.getScene().getWindow();

        stage.close();

    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {

        txtPesquisarCliente.setText("Junior");

    }

}

CadastroCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane id="AnchorPane" fx:id="anchorPaneCadastroCliente" prefHeight="200.0" prefWidth="328.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="controle.CadastroClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Id" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <Label layoutX="155.0" layoutY="14.0" text="Cliente" AnchorPane.leftAnchor="74.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtId" layoutX="14.0" layoutY="40.0" prefHeight="25.0" prefWidth="50.0" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="41.0" />
      <TextField fx:id="txtCliente" disable="true" layoutX="64.0" layoutY="41.0" prefHeight="25.0" prefWidth="150.0" AnchorPane.leftAnchor="74.0" AnchorPane.topAnchor="41.0" />
      <Button fx:id="btnPesquisar" layoutX="224.0" layoutY="41.0" mnemonicParsing="false" onAction="#btnPesquisarAction" prefHeight="25.0" prefWidth="80.0" text="Pesquisar" AnchorPane.leftAnchor="234.0" AnchorPane.topAnchor="41.0" />
   </children>
</AnchorPane>

PesquisarCliente.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" fx:id="anchorPanePesquisarCliente" prefHeight="80.0" prefWidth="221.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controle.PesquisarClienteControle">
   <children>
      <Label layoutX="14.0" layoutY="14.0" text="Cliente" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="14.0" />
      <TextField fx:id="txtPesquisarCliente" layoutX="14.0" layoutY="31.0" prefHeight="25.0" prefWidth="150.0" AnchorPane.topAnchor="41.0" />
      <Button fx:id="btnOk" layoutX="164.0" layoutY="41.0" mnemonicParsing="false" onAction="#btnOkAction" text="OK" AnchorPane.leftAnchor="174.0" AnchorPane.topAnchor="41.0" />
   </children>
</AnchorPane>

Segue

No entanto essa é uma péssima pratica

Bons Codigos

1 curtida