openplanning

Hướng dẫn và ví dụ JavaFX ChoiceBox

Xem thêm các chuyên mục:

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- JavaFX ChoiceBox

2- Ví dụ ChoiceBox

ChoiceBoxDemo.java

package org.o7planning.javafx.choicebox;

import org.o7planning.javafx.model.Language;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class ChoiceBoxDemo extends Application {

    @Override
    public void start(Stage primaryStage) {

        Language vietnamese = new Language("vi", "Vietnamese");
        Language english = new Language("en", "English");
        Language russian = new Language("ru", "Russian");

        FlowPane root = new FlowPane();

        Label label = new Label("Select Language:");

        ObservableList<Language> languages //
                = FXCollections.observableArrayList(vietnamese, english, russian);

        ChoiceBox<Language> choiceBox = new ChoiceBox<Language>(languages);

        root.setPadding(new Insets(10));

        root.getChildren().addAll(label, choiceBox);
        root.setPadding(new Insets(10));
        root.setHgap(10);

        primaryStage.setTitle("ChoiceBox (o7planning.org)");
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

}
Language.java

package org.o7planning.javafx.model;

public class Language {

    private String code;
    private String name;
    private String greeting;

    public Language() {

    }

    public Language(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public Language(String code, String name, String greeting) {
        this.code = code;
        this.name = name;
        this.greeting = greeting;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGreeting() {
        return greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }

    @Override
    public String toString() {
        return this.name;
    }

}
Chạy ví dụ:

ChoiceBox & Separator:

Bạn cũng có thể thêm Separator để ngăn cách các phần tử của ChoiceBox.
ChoiceBoxSeparatorDemo.java

package org.o7planning.javafx.choicebox;

import org.o7planning.javafx.model.Language;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class ChoiceBoxSeparatorDemo extends Application {

    @Override
    public void start(Stage primaryStage) {

        Language vietnamese = new Language("vi", "Vietnamese");
        Language english = new Language("en", "English");
        Language russian = new Language("ru", "Russian");
        Separator separator = new Separator();

        FlowPane root = new FlowPane();

        Label label = new Label("Select Language:");

        ObservableList<?> languages //
                = FXCollections.observableArrayList(vietnamese, separator, english, russian);
       
        ChoiceBox<?> choiceBox = new ChoiceBox<>(languages);

        root.setPadding(new Insets(10));

        root.getChildren().addAll(label, choiceBox);
        root.setPadding(new Insets(10));
        root.setHgap(10);

        primaryStage.setTitle("ChoiceBox (o7planning.org)");
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

}

3- ChoiceBox và sự kiện


// Thay đổi Index
choiceBox.getSelectionModel()
           .selectedIndexProperty()
           .addListener(ChangeListener<? super Number>);

// Thay đổi Item      
choiceBox.getSelectionModel()
           .selectedItemProperty()
           .addListener(ChangeListener<? super T>);
ChoiceBoxEventDemo.java

package org.o7planning.javafx.choicebox;

import org.o7planning.javafx.model.Language;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class ChoiceBoxEventDemo extends Application {

   @Override
   public void start(Stage primaryStage) {

       Language vietnamese = new Language("vi", "Vietnamese", "Xin Chào");
       Language english = new Language("en", "English", "Hello");
       Language russian = new Language("ru", "Russian", "привет");

       FlowPane root = new FlowPane();

       Label label = new Label("Select Language:");
       Label greetingLabel = new Label("");

       ObservableList<Language> languages //
               = FXCollections.observableArrayList(vietnamese, english, russian);

       ChoiceBox<Language> choiceBox = new ChoiceBox<Language>(languages);

       ChangeListener<Language> changeListener = new ChangeListener<Language>() {

           @Override
           public void changed(ObservableValue<? extends Language> observable, //
                   Language oldValue, Language newValue) {
               if (newValue != null) {
                   greetingLabel.setText(newValue.getGreeting());
               }
           }
       };
       // Sự kiện khi thay đổi Item trên ChoiceBox
       choiceBox.getSelectionModel().selectedItemProperty().addListener(changeListener);

       root.setPadding(new Insets(10));

       root.getChildren().addAll(label, choiceBox, greetingLabel);
       root.setPadding(new Insets(10));
       root.setHgap(10);

       primaryStage.setTitle("ChoiceBox (o7planning.org)");
       Scene scene = new Scene(root, 400, 300);
       primaryStage.setScene(scene);
       primaryStage.show();
   }

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

}

Xem thêm các chuyên mục:

Có thể bạn quan tâm

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.