Zoeken…


Een actie-luisteraar toevoegen

Knoppen activeren actiegebeurtenissen wanneer ze worden geactiveerd (bijv. Geklikt, een toetsbinding voor de knop wordt ingedrukt, ...).

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello World!");
    }
});

Als u Java 8+ gebruikt, kunt u lambdas gebruiken voor actieluisteraars.

button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));

Een afbeelding toevoegen aan een knop

Knoppen kunnen een afbeelding hebben. graphic kan elk JavaFX-knooppunt zijn, zoals een ProgressBar

button.setGraphic(new ProgressBar(-1));

Een ImageView

button.setGraphic(new ImageView("images/icon.png"));

Of zelfs een andere knop

button.setGraphic(new Button("Nested button"));

Maak een knop

Een Button is eenvoudig:

Button sampleButton = new Button();

Hiermee maakt u een nieuwe Button zonder tekst of afbeelding erin.

Als u een Button met een tekst wilt maken, gebruikt u gewoon de constructor die een String als parameter gebruikt (die de textProperty van de Button textProperty ):

Button sampleButton = new Button("Click Me!");

Wilt u het creëren van een Button met een grafische binnen of een ander Node , gebruik dan deze constructeur:

Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));

Standaard- en annuleerknoppen

Button API biedt een eenvoudige manier om veelgebruikte sneltoetsen aan knoppen toe te wijzen zonder dat u toegang hoeft te hebben tot de lijst met versnellers die is toegewezen aan Scene of expliciet luistert naar de belangrijkste gebeurtenissen. Er zijn namelijk twee setCancelButton beschikbaar: setDefaultButton en setCancelButton :

  • Als u setDefaultButton op true wordt de Button KeyCode.ENTER telkens wanneer deze een KeyCode.ENTER gebeurtenis ontvangt.

  • Als u setCancelButton op true wordt de Button KeyCode.ESCAPE telkens wanneer deze een KeyCode.ESCAPE gebeurtenis ontvangt.

In het volgende voorbeeld wordt een Scene met twee knoppen die worden geactiveerd wanneer op enter- of escape-toetsen wordt gedrukt, ongeacht of deze zijn scherpgesteld of niet.

FlowPane root = new FlowPane();
        
Button okButton = new Button("OK");
okButton.setDefaultButton(true);
okButton.setOnAction(e -> {
    System.out.println("OK clicked.");
});
        
Button cancelButton = new Button("Cancel");            
cancelButton.setCancelButton(true);
cancelButton.setOnAction(e -> {
    System.out.println("Cancel clicked.");
});
        
root.getChildren().addAll(okButton, cancelButton);
Scene scene = new Scene(root);

De bovenstaande code werkt niet als deze KeyEvents worden gebruikt door een bovenliggend Node :

scene.setOnKeyPressed(e -> {
    e.consume();
});


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow