Sök…


Lägga till en actionlyssnare

Knappar avfyrar händelser när de aktiveras (t.ex. klickas, en knappbindning för knappen trycks in, ...).

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

Om du använder Java 8+ kan du använda lambdas för actionlyssnare.

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

Lägga till en grafik på en knapp

Knappar kan ha en grafik. graphic kan vara vilken JavaFX-nod som helst, som en ProgressBar

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

En ImageView

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

Eller till och med en annan knapp

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

Skapa en knapp

Skapa en Button är enkel:

Button sampleButton = new Button();

Detta skapar en ny Button utan text eller grafik inuti.

Om du vill skapa en Button med en text använder du bara konstruktören som tar en String som parameter (som anger textProperty för Button ):

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

Om du vill skapa en Button med en grafik inuti eller någon annan Node använder du denna konstruktör:

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

Standard- och Avbryt-knappar

Button API ger ett enkelt sätt att tilldela vanliga kortkommandon till knappar utan att behöva komma åt acceleratorlistan tilldelad Scene eller uttryckligen lyssna på nyckelhändelserna. Två bekvämlighetsmetoder tillhandahålls nämligen: setDefaultButton och setCancelButton :

  • setDefaultButton ställer setDefaultButton till true kommer Button att avfyras varje gång den får en KeyCode.ENTER händelse.

  • setCancelButton ställer setCancelButton till true kommer Button att avfyras varje gång den får en KeyCode.ESCAPE händelse.

Följande exempel skapar en Scene med två knappar som avfyras när man trycker på Enter- eller Escape-tangenterna, oavsett om de är fokuserade eller inte.

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);

Koden ovan fungerar inte om dessa KeyEvents konsumeras av någon överordnad Node :

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow