绑定
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>