Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package driver;
- import java.util.Arrays;
- import java.util.Set;
- import java.util.concurrent.atomic.AtomicInteger;
- import javafx.application.Application;
- import javafx.beans.property.SimpleBooleanProperty;
- 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.ListCell;
- import javafx.scene.control.ListView;
- import javafx.scene.control.ToggleButton;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.StackPane;
- import javafx.stage.Stage;
- import lombok.Data;
- public class TestListView2 extends Application{
- private static final int NUMBER_OF_COMPUTERS = 10;
- public enum Tag{
- FAVORITE, ANIMAL, CLOTHING
- }
- @Override
- public void start(Stage primaryStage) throws Exception{
- // Initialize Computers
- Computer[] computers = Arrays.stream(new Computer[NUMBER_OF_COMPUTERS])
- .map(computer -> new Computer()).toArray(Computer[]::new);
- ObservableList<Computer> obsComputers = FXCollections.observableArrayList(computers);
- // Create ListView
- ListView<Computer> computerView = new ListView<>();
- computerView.setCellFactory((value) -> {
- return new ListCell<Computer>(){
- @Override
- public void updateItem(Computer item, boolean isEmpty){
- super.updateItem(item, isEmpty);
- if(item != null && !isEmpty){
- HBox parentPane = new HBox();
- for(Tag tag : Tag.values()){
- ToggleButton toggleButton = new ToggleButton(tag.toString());
- toggleButton.selectedProperty()
- .addListener(new ChangeListener<Boolean>(){
- @Override
- public void changed(
- ObservableValue<? extends Boolean> observable,
- Boolean oldValue, Boolean newValue){
- if(newValue.booleanValue()){
- item.getTags().add(tag);
- } else{
- item.getTags().remove(tag);
- }
- System.out.println(
- "COMPUTER " + item.getId() + ":" + item.tags);
- }
- });
- parentPane.getChildren().add(toggleButton);
- }
- this.setGraphic(parentPane);
- }
- }
- };
- });
- computerView.setItems(obsComputers);
- StackPane contentPane = new StackPane();
- contentPane.getStylesheets()
- .add(TestListView.class.getResource("list-view.css").toExternalForm());
- // list-view.css
- // .toggle-button{
- // -fx-background-color: blue;
- // }
- //
- // .toggle-button:selected{
- // -fx-background-color: red;
- // }
- contentPane.getChildren().add(computerView);
- primaryStage.setScene(new Scene(contentPane, 500, 500));
- primaryStage.show();
- }
- public static void main(String[] args){
- launch(args);
- }
- @Data
- private static class Computer{
- private static final AtomicInteger ID_GENERATOR = new AtomicInteger();
- private SimpleBooleanProperty stateProperty = new SimpleBooleanProperty(false);
- private Set<Tag> tags = FXCollections.observableSet();
- private static final boolean OFF = false;
- private static final boolean ON = true;
- private int id = ID_GENERATOR.getAndIncrement();
- private SimpleBooleanProperty stateProperty(){
- return stateProperty;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement