小编Chi*_*ddi的帖子

无法在JavaFX中向ObservableList(UnsupportedOperationException)添加元素

初始起点

我有一个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)

java arrays javafx list

7
推荐指数
1
解决办法
5916
查看次数

如何创建自动化且无人值守的 Clonezilla Restore 解决方案

我想为所有正在寻找自动 Clonezilla 恢复选项的人提供一个简短的教程。

假设

  • 仅 UEFI 启动
  • Clonezilla/dev/sdb1和图像存储库都/dev/sdb2/images位于同一个 USB 记忆棒上
  • 恢复到整个SSD/dev/sda

我想

  1. 从 USB 记忆棒启动
  2. 自动选择并启动自定义 Clonezilla 恢复选项
  3. 从 USB 记忆棒自动加载图像存储库
  4. 用户选择要恢复的图像
  5. 从选定的图像自动恢复到SSD
  6. 恢复成功后自动重启

restore clonezilla

3
推荐指数
1
解决办法
2万
查看次数

如何为 DatePicker (JavaFX 8) 获取正确的 CSS 项

在此处输入图片说明

大家好,您知道如何在DatePicker控件中编辑 TextField 边框颜色和边框宽度(当前为细红色边框)吗?? 顺便说一句,我在哪里可以找到对 JavaFX 控件的可用 CSS 项的良好参考?

干杯!

css javafx datepicker

2
推荐指数
1
解决办法
7299
查看次数

按OK按钮后如何使JavaFX Dialog不关闭

目前我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)

java dialog javafx

1
推荐指数
1
解决办法
1165
查看次数

标签 统计

javafx ×3

java ×2

arrays ×1

clonezilla ×1

css ×1

datepicker ×1

dialog ×1

list ×1

restore ×1