ListView is not reflecting changes

前端 未结 2 1138
一整个雨季
一整个雨季 2020-12-06 09:04

I created a TableView a while back and registered Properties to each of the TableColumns. Editing of the internal data reflected itself back in the TableView just fine.

2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-06 09:25

    Here is sample how make listview with custom objects:

    public class JavaFX_ListView extends Application {
    
        class MyObject {
            String day;
            int number;
    
            MyObject(String d, int n) {
                day = d;
                number = n;
            }
    
            String getDay() {
                return day;
            }
    
            int getNumber() {
                return number;
            }
    
            @Override
            public String toString() {
    
                return number + " " + day;
            }
        }
    
        ObservableList myList;
    
        // Create dummy list of MyObject
        private void prepareMyList() {
            myList = FXCollections.observableArrayList();
            myList.add(new MyObject("Sunday", 50));
            myList.add(new MyObject("Monday", 60));
            myList.add(new MyObject("Tuesday", 20));
    
        }
    
        @Override
        public void start(Stage primaryStage) {
            primaryStage.setTitle("sample");
            prepareMyList();
            ListView listView = new ListView<>();
            listView.setItems(myList);
    
            Pane root = new Pane();
            root.getChildren().add(listView);
            primaryStage.setScene(new Scene(root, 300, 250));
            primaryStage.show();
            // testing
            Timer timer = new Timer();
            timer.schedule(new UpdateListTask(), 1000, 1000);
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    
        // testing
        public class UpdateListTask extends TimerTask {
            @Override
            public void run() {
                Platform.runLater(new Runnable() {
    
                    @Override
                    public void run() {
                        myList.add(new MyObject("sample", Calendar.getInstance()
                                .getTime().getSeconds()));
                    }
                });
            }
        }
    
    }
    

提交回复
热议问题