074-JavaFX开发GUI图形用户界面04

绑定

Binding

import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.beans.PropertyChangeListener;
import java.net.http.WebSocket;

public class Main extends Application {

    private Stage stage;

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

    @Override
    public void start(Stage stage) {
        this.stage = stage;
        stage.setTitle("Hello World");

        SimpleIntegerProperty x = new SimpleIntegerProperty(5);
        SimpleIntegerProperty y = new SimpleIntegerProperty();

        y.bind(x.multiply(10));

        Button button = new Button("Change X");
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                x.set((int) (Math.random() * 100));
                System.out.println("x is: " + x.getValue());
                System.out.println("y is: " + y.getValue());
            }
        });

        //layout
        VBox vBox = new VBox();
        vBox.setSpacing(10);
        vBox.setPadding(new Insets(10, 10, 10, 10));
        vBox.getChildren().addAll(button);

        Scene scene = new Scene(vBox, 700, 500);
        scene.getStylesheets().add("style.css");
        stage.setScene(scene);
        stage.show();
    }

    private void toast(String s) {
        new ToastBox().display(s);
    }
}

Binding Property

import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.beans.PropertyChangeListener;
import java.net.http.WebSocket;

public class Main extends Application {

    private Stage stage;

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

    @Override
    public void start(Stage stage) {
        this.stage = stage;
        stage.setTitle("Hello World");

        TextField text = new TextField();
        text.setPromptText("Input here");

        Label label = new Label();
        label.textProperty().bind(text.textProperty());

        //layout
        VBox vBox = new VBox();
        vBox.setSpacing(10);
        vBox.setPadding(new Insets(10, 10, 10, 10));
        vBox.getChildren().addAll(text, label);

        Scene scene = new Scene(vBox, 700, 500);
        scene.getStylesheets().add("style.css");
        stage.setScene(scene);
        stage.show();
    }

    private void toast(String s) {
        new ToastBox().display(s);
    }
}

fxml的使用

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>
<VBox fx:controller="sample.Controller" xmlns:fx="http://javafx.com/fxml" alignment="center">

    <Label text="Hello World"/>
    <Button text="ok" fx:id="btn_ok" onAction="#ok"/>

</VBox>
package sample;

import javafx.scene.control.Button;

public class Controller {

    public Button ok;

    public void ok() {
        System.out.println("Hello World");
    }
}
package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


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

fx:define

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.control.RadioButton?>
<VBox fx:controller="sample.Controller" xmlns:fx="http://javafx.com/fxml" alignment="center">

    <fx:define>
        <ToggleGroup fx:id="toggleGroup"/>
    </fx:define>

    <Label text="Hello World"/>
    <Button text="ok" fx:id="btn_ok" onAction="#ok"/>

    <RadioButton text="Apple" toggleGroup="$toggleGroup"/>
    <RadioButton text="Banana" toggleGroup="$toggleGroup"/>
    <RadioButton text="Grape" toggleGroup="$toggleGroup"/>

</VBox>


 

发布了1081 篇原创文章 · 获赞 42 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_33781658/article/details/104981754