"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Botón

Botón

Publicado el 2024-07-31
Navegar:292

Un botón es un control que desencadena un evento de acción cuando se hace clic. JavaFX proporciona botones normales, botones de alternancia, botones de casilla de verificación y botones de opción. Las características comunes de estos botones se definen en las clases ButtonBase y Labeled como se muestra en la siguiente figura.

Image description

La clase Labeled define las propiedades comunes para etiquetas y botones. Un botón es como una etiqueta excepto que el botón tiene la propiedad onAction definida en la clase ButtonBase, que establece un controlador para manejar la acción de un botón.

El siguiente código proporciona un programa que utiliza los botones para controlar el movimiento de un texto, como se muestra en la figura siguiente.

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

El programa crea dos botones btLeft y btRight y cada botón contiene un texto y una imagen (líneas 18–19). Los botones se colocan en un HBox (línea 20) y el HBox se coloca en la parte inferior de un panel de borde (línea 25). Se crea un texto en la línea 14 y se coloca en el centro del panel de borde (línea 29). El controlador de acciones para btLeft mueve el texto hacia la izquierda (línea 31). El controlador de acciones para btRight mueve el texto hacia la derecha (línea 32).

El programa define deliberadamente un método protegido getPane() para devolver un panel (línea 16). Las subclases anularán este método en los próximos ejemplos para agregar más nodos en el panel. El texto se declara protegido para que las subclases puedan acceder a él (línea 14).

Declaración de liberación Este artículo se reproduce en: https://dev.to/paulike/button-4khg?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3