Using listproperty in JavaFX
•
Java
I defined a class that contains a list I tried to initialize the list in the constructor with the transport list:
public class Person { public IntegerProperty id; public ListProperty<Priority> choice; public Person(int id,List<Priority> list) { this.id = new SimpleIntegerProperty(id); this.choice = new SimpleListProperty<Priority>(); for (int i = 0; i < 5; i++) { this.choice.add(list.get(i)); } } public IntegerProperty idproperty() { return id; } public ListProperty<Priority> choiceproperty() { return choice; } }
Class priority contains two fields and their getters:
public IntegerProperty rate; public StringProperty speciality;
Didn't I use listproperty correctly?
When I try to create an object:
Exception in Application start method Exception in thread "main" java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at java.util.AbstractCollection.addAll(AbstractCollection.java:334) at javafx.beans.binding.ListExpression.addAll(ListExpression.java:280) at Person.setAllchoice(Person.java:24) at Person.<init>(Person.java:17) at Distribution.ReadDataFromFile(Distribution.java:85) at Distribution.start(Distribution.java:28) at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215) at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) at com.sun.glass.ui.invokelaterDispatcher$Future.run(invokelaterDispatcher.java:76) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:82) ... 1 more
Solution
Try initializing simplelistproperty in this way:
public Person(int id,List<Priority> list) { ... ObservableList<Priority> observableList = FXCollections.observableArrayList(list) this.choice = new SimpleListProperty<Priority>(observableList); }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码