openplanning

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

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

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
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: