Hướng dẫn sử dụng JavaFX ListView

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

Nhóm thành viên của o7planning đã xây dựng một website tuyệt vời và miễn phí giúp mọi người học tiếng Anh, học từ vựng dễ dàng hơn. Hãy truy cập để học tiếng Anh ngay bây giờ:

1- JavaFX ListView

JavaFX ListView hiển thị các phần tử (Items) của nó theo chiều thẳng đứng hoặc theo chiều ngang.
Dưới đây là một ListView thẳng đứng, gồm 3 phần tử (item).
ListView nằm ngang
// Mặc định ListView là thẳng đứng.
// Sét ListView có hướng nằm ngang.

listView.setOrientation(Orientation.HORIZONTAL);

2- Ví dụ ListView

ListViewDemo.java
package org.o7planning.javafx.listview;

import org.o7planning.javafx.model.Book;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ListViewDemo extends Application {

  @Override
  public void start(Stage stage) {

      Book book1 = new Book(1L, "J01", "Java IO Tutorial");
      Book book2 = new Book(2L, "J02", "Java Enums Tutorial");
      Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners");


      // Một danh sách
      ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3);

      // Tạo một ListView
      ListView<Book> listView = new ListView<Book>(books);


      // Cho phép lựa chọn nhiều dòng trên danh sách.
      listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);


      // Lựa chọn phần tử Index = 1,2
      listView.getSelectionModel().selectIndices(1, 2);

      // Focus
      listView.getFocusModel().focus(1);

      StackPane root = new StackPane();
      root.getChildren().add(listView);

      stage.setTitle("ListView (o7planning.org)");

      Scene scene = new Scene(root, 350, 200);
      stage.setScene(scene);
      stage.show();
  }

  public static void main(String[] args) {
      launch(args);
  }
}
Book.java
package org.o7planning.javafx.model;

public class Book {

    private Long id;
    private String code;
    private String name;

    public Book(Long id, String code, String name) {
        this.id = id;
        this.code = code;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    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;
    }

    @Override
    public String toString() {
        return this.name;
    }
    
}
Chạy ví dụ:

3- ListView & ChangeListener

ListViewChangeListenerExample.java
package org.o7planning.javafx.listview;

import org.o7planning.javafx.model.Book;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ListViewChangeListenerExample extends Application {

    @Override
    public void start(Stage stage) {

        Book book1 = new Book(1L, "J01", "Java IO Tutorial");
        Book book2 = new Book(2L, "J02", "Java Enums Tutorial");
        Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners");

        Label label = new Label();
 
        // Một danh sách
        ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3);
 
        // Tạo một ListView
        ListView<Book> listView = new ListView<Book>(books);
 
        // Chỉ cho phép lựa chọn 1 dòng trên danh sách.
        listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

      
        listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Book>() {

            @Override
            public void changed(ObservableValue<? extends Book> observable, Book oldValue, Book newValue) {
                label.setText("OLD: " + oldValue + ",  NEW: " + newValue);
            }
        });

        VBox root = new VBox();
        root.getChildren().addAll(listView, label);

        stage.setTitle("ListView & ChangeListener (o7planning.org)");

        Scene scene = new Scene(root, 450, 200);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
  
}
Sự kiện dựa trên Index:
ListViewChangeListenerExample2.java
package org.o7planning.javafx.listview;

import org.o7planning.javafx.model.Book;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ListViewChangeListenerExample2 extends Application {

    @Override
    public void start(Stage stage) {

        Book book1 = new Book(1L, "J01", "Java IO Tutorial");
        Book book2 = new Book(2L, "J02", "Java Enums Tutorial");
        Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners");

        Label label = new Label();
 
        // Một danh sách
        ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3);
 
        // Tạo một ListView
        ListView<Book> listView = new ListView<Book>(books);
 
        // Chỉ cho phép lựa chọn 1 dòng trên danh sách.
        listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);

      
        listView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {

            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                label.setText("OLD Index: " + oldValue + ",  NEW Index: " + newValue);
            }

            
        });

        VBox root = new VBox();
        root.getChildren().addAll(listView, label);

        stage.setTitle("ListView & ChangeListener (o7planning.org)");

        Scene scene = new Scene(root, 450, 200);
        stage.setScene(scene);
        stage.show();
    }

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

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