"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Bouton

Bouton

Publié le 2024-07-31
Parcourir:177

Un bouton est un contrôle qui déclenche un événement d'action lorsqu'il est cliqué. JavaFX fournit des boutons normaux, des boutons à bascule, des boutons de case à cocher et des boutons radio. Les fonctionnalités communes de ces boutons sont définies dans les classes ButtonBase et Labeled, comme le montre la figure ci-dessous.

Image description

La classe Labeled définit les propriétés communes des étiquettes et des boutons. Un bouton est comme une étiquette, sauf que le bouton a la propriété onAction définie dans la classe ButtonBase, qui définit un gestionnaire pour gérer l'action d'un bouton.

Le code ci-dessous donne un programme qui utilise les boutons pour contrôler le mouvement d'un texte, comme le montre la figure ci-dessous.

package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;

public class ButtonDemo extends Application {
    protected Text text = new Text(50, 50, "JavaFX Programming");

    protected BorderPane getPane() {
        HBox paneForButtons = new HBox(20);
        Button btLeft = new Button("Left", new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg"));
        Button btRight = new Button("Right", new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg"));
        paneForButtons.getChildren().addAll(btLeft, btRight);
        paneForButtons.setAlignment(Pos.CENTER);
        paneForButtons.setStyle("-fx-border-color: green");

        BorderPane pane = new BorderPane();
        pane.setBottom(paneForButtons);

        Pane paneForText = new Pane();
        paneForText.getChildren().add(text);
        pane.setCenter(paneForText);

        btLeft.setOnAction(e -> text.setX(text.getX() - 10));
        btRight.setOnAction(e -> text.setX(text.getX()   10));

        return pane;
    }

    @Override // Override the start method in the Application class
    public void start(Stage primaryStage) {
        // Create a scene and place it in the stage
        Scene scene = new Scene(getPane(), 450, 200);
        primaryStage.setTitle("ButtonDemo"); // Set the stage title
        primaryStage.setScene(scene); // Place the scene in the stage
        primaryStage.show(); // Display the stage
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

Image description

Le programme crée deux boutons btLeft et btRight, chaque bouton contenant un texte et une image (lignes 18-19). Les boutons sont placés dans une HBox (ligne 20) et la HBox est placée en bas d'un volet de bordure (ligne 25). Un texte est créé à la ligne 14 et est placé au centre du volet de bordure (ligne 29). Le gestionnaire d'action pour btLeft déplace le texte vers la gauche (ligne 31). Le gestionnaire d'action pour btRight déplace le texte vers la droite (ligne 32).

Le programme définit volontairement une méthode protégée getPane() pour renvoyer un volet (ligne 16). Cette méthode sera remplacée par les sous-classes dans les exemples à venir pour ajouter plus de nœuds dans le volet. Le texte est déclaré protégé afin d'être accessible aux sous-classes (ligne 14).

Déclaration de sortie Cet article est reproduit sur : https://dev.to/paulike/button-4khg?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3