MadPro
MadPro

Reputation: 273

How to creat a button programmatically with JavaFX?

I want to make a button on an AnchorPane without drag it from the library in the FXML file I want to do it progammatically: if the search button clicked, should show a new button not existed in the AnchorPane before I did this code but I don't know what is wrong with it:

private void searchButton(ActionEvent evt)  {

    Button tab = new Button();
    tab.setLayoutX(147);
    tab.setLayoutY(102);
    tab.setText("Tab1");
    tab.setPrefHeight(27);
    tab.setPrefWidth(69);
    WebView wb = new WebView();
    wb.setLayoutX(-1);
    wb.setLayoutY(128);
    wb.setPrefWidth(1604);
    wb.setPrefWidth(700);
}

Upvotes: 1

Views: 1853

Answers (1)

adekcz
adekcz

Reputation: 410

I am assuming that you searchButton method is in controller attached to some FXML. Then all you need to do is this:

yourAnchorPane.getChildren().add(tab);

If you don't have already published reference to anchorPane in your controller, then add this into your controller

@FXML
AnchorPane yourAnchorPane;

And in SceneBuilder select your anchorPane, go to code tab and enter "yourAnchorPane" as fx:id.

Further info on working with anchorpane is javadoc.


You probably also want to set some constraints on the tab to locate it at a position within the AnchorPane. For instance, the following code will locate your button tab relative to the top left corner of the AnchorPane: Ten pixels down and fifteen pixels to the right.

AnchorPane.setTopAnchor(tab, 10.0); 
AnchorPane.setLeftAnchor(tab, 15.0);

Upvotes: 1

Related Questions