ObservableList_addListener1
  • ObservableList<String> oStr2 = FXCollections.observableList(list2);
    oStr1.addListener
  • onChanged(ListChangeListener.Change change)
Code :

package javafxtemplate1;
// Path__RotationTransition
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
/**
*
* @author Manas9
*/
public class JavaFXTemplate1 extends Application {
//
static int n1=0;
@Override

public void start(Stage primaryStage)
{
Label label1 = new Label("Click On the screen");
label1.setLayoutX(10);label1.setLayoutY(10);
Group groot = new Group();
//
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
ObservableList<String> oStr1 = FXCollections.observableList(list1);
ObservableList<String> oStr2 = FXCollections.observableList(list2);
oStr1.addListener(new ListChangeListener() {
@Override
public void onChanged(ListChangeListener.Change change) {
n1 = n1 +1;
label1.setText("Changed " + (n1));
System.out.println("change!" + n1);
list2.add("Changed " + (n1));
}
});

oStr1.add("str one");oStr1.add("str two");
oStr1.add("str three");
//add ObservableList items
ListView<String> lvwList1 = new ListView<>(oStr1);
lvwList1.setLayoutX(110); lvwList1.setLayoutY(20);
lvwList1.setMaxWidth(100);
//changes reported by listener
ListView<String> lvwList2 = new ListView<>(oStr2);
lvwList2.setLayoutX(210); lvwList2.setLayoutY(20);
lvwList2.setMaxWidth(100);

groot.getChildren().addAll(label1, lvwList1,lvwList2);
Scene scene = new Scene(groot, 450, 250);
primaryStage.setScene(scene);
primaryStage.setTitle("ObservableList:: UIControl");
primaryStage.show();
}

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

}

}

Runtime display: