初始起点
我有一个List1000个Person对象,我想插入一个Extractor来监听任何Person对象中的属性更改(ObservableList稍后将附加到a TableView).
所以我的代码就像:
ObservableList<Person> observablePersons = FXCollections.observableList(personlist,
personextractor);
Run Code Online (Sandbox Code Playgroud)
错误信息
但是当我尝试向这个ObservableList observablePersons添加一个新人对象时,我遇到了这个错误:
run:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at com.sun.javafx.collections.ObservableListWrapper.doAdd(ObservableListWrapper.java:101)
at javafx.collections.ModifiableObservableListBase.add(ModifiableObservableListBase.java:151)
at java.util.AbstractList.add(AbstractList.java:108)
at test.listchangelistener.listChangeDemo.main(listChangeDemo.java:72)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
您能否告诉我为什么会遇到此错误消息?我的java版本是jdk1.8.0_91(32位)
人类
package test.listchangelistener;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
class Person {
private final IntegerProperty age = new SimpleIntegerProperty();
private final StringProperty name = new SimpleStringProperty();
public Person(String name, Integer age) {
setName(name); …Run Code Online (Sandbox Code Playgroud) 我想为所有正在寻找自动 Clonezilla 恢复选项的人提供一个简短的教程。
/dev/sdb1和图像存储库都/dev/sdb2/images位于同一个 USB 记忆棒上/dev/sda大家好,您知道如何在DatePicker控件中编辑 TextField 边框颜色和边框宽度(当前为细红色边框)吗?? 顺便说一句,我在哪里可以找到对 JavaFX 控件的可用 CSS 项的良好参考?
干杯!
目前我Dialog<User> loginDialog = new Dialog<>();用来创建一个登录对话框,用户需要在其中输入用户名和密码,然后单击确定按钮登录.
不幸的是,无论登录是否成功,每次按下确定按钮时对话窗格都会自动关闭.我希望对话框窗格仅在按下取消按钮或登录成功时自行关闭.
正如NwDX指出的那样.需要使用addEventFilter方法.我的实现看起来像这样:
btnLogin.addEventFilter(ActionEvent.ACTION, event -> {
if (!comboAdministrator.getValue().getPassword().equals(pfLogin.getText())) {
lblErrorNotification.setText("Password is incorrect. Try again!");
pfLogin.requestFocus();
event.consume();
}
});
Run Code Online (Sandbox Code Playgroud)
说明:eventfilter捕获任何不匹配的密码,并向标签节点发送错误消息以进行通知.event.consume()是必需的,否则对话框将通过再次关闭自身而恢复其原始行为.
private Optional<User> showLoginDialog() {
Dialog<User> dialog = new Dialog<>();
dialog.setTitle("Administrator Login");
dialog.setHeaderText("Enter administrator password");
dialog.initOwner(btnShowManagerView.getScene().getWindow());
dialog.getDialogPane().getStylesheets().add("util/resources/myCSS.css");
dialog.setGraphic(new ImageView(ResourceClass.class.getResource("locker.png").toString()));
ButtonType loginButtonType = new ButtonType("Login", ButtonData.YES);
ButtonType cancelButtonType = ButtonType.CANCEL;
dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, cancelButtonType);
Label lblErrorNotification = new Label();
lblErrorNotification.setTextFill(Color.RED);
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(20, 150, 20, 20));
ComboBox<User> comboAdministrator …Run Code Online (Sandbox Code Playgroud)