首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JavaFX SimpleObjectProperty中禁止null (或返回默认值)

在JavaFX中,SimpleObjectProperty是一种可观察的属性,用于绑定和监听对象的变化。默认情况下,SimpleObjectProperty允许存储null值。然而,有时候我们希望禁止null值的存储,或者在属性为null时返回一个默认值。

要在SimpleObjectProperty中禁止null值的存储,可以使用JavaFX提供的NotNullProperty类。NotNullProperty是SimpleObjectProperty的子类,它重写了set方法,当传入的值为null时,会抛出NullPointerException异常,从而禁止了null值的存储。

以下是一个示例代码:

代码语言:txt
复制
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.adapter.JavaBeanObjectPropertyBuilder;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

public class Main {
    public static void main(String[] args) {
        NotNullProperty<String> property = new NotNullProperty<>("Default Value");

        property.addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                System.out.println("Property changed: " + newValue);
            }
        });

        property.set("New Value"); // 正常设置新值
        property.set(null); // 抛出NullPointerException异常
    }

    public static class NotNullProperty<T> extends SimpleObjectProperty<T> {
        private T defaultValue;

        public NotNullProperty(T defaultValue) {
            this.defaultValue = defaultValue;
        }

        @Override
        public void set(T newValue) {
            if (newValue == null) {
                throw new NullPointerException("Null value is not allowed");
            }
            super.set(newValue);
        }

        @Override
        public T get() {
            T value = super.get();
            return value != null ? value : defaultValue;
        }
    }
}

在上面的示例中,我们创建了一个NotNullProperty类,它继承自SimpleObjectProperty,并重写了set方法和get方法。在set方法中,如果传入的值为null,会抛出NullPointerException异常,从而禁止了null值的存储。在get方法中,如果属性的值为null,会返回预设的默认值。

这样,我们就可以使用NotNullProperty来代替SimpleObjectProperty,实现禁止null值存储或返回默认值的功能。

推荐的腾讯云相关产品:无

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React 16 从 setState 返回 null 的妙用

概述 React 16 为了防止不必要的 DOM 更新,允许你决定是否让 .setState 更来新状态。调用 .setState 时返回 null 将不再触发更新。...React 16 对状态性能进行了改进,如果新的状态值与其现有值相同的话,通过 setState 返回 null 来防止来触发更新。 ?...解决方案 以下是我们将要遵循的步骤,来防止不必要的重新渲染: 检查新的状态值是否与现有值相同 如果值相同,我们将返回 null 返回 null 将不会更新状态和触发组件重新渲染 首先, app 组件的...我在下面的两个 GIF 突出显示了 React DevTools 的更新: ? 没有从 setState 返回 null ?...总结 本文介绍了 React 16 怎样从 setState 返回 null。我在下面的 CodeSandbox 添加了 mocktail 选择程序的完整代码,供你使用和 fork。

14.4K20

解决laravelleftjoin带条件查询没有返回右表为NULL的问题

问题描述:使用laravel的左联接查询的时候遇到一个问题,查询带了右表一个筛选条件,导致结果没有返回右表为空的记录。...- leftJoin('class as c','c.user_id','=','u.user_id') - where('c.status','=',2) - get(); 解决方案: 1.mysql...的角度上说,直接加where条件是不行的,会导致返回结果不返回class为空记录,正确是写法应该是 select u.user_id,c.class from users u left join class...u.user_id=c.user_id and c.status=2; 没错,正确写法是left join .. on .. and 而非 left join .. on .. where 2.那么,laravel...以上这篇解决laravelleftjoin带条件查询没有返回右表为NULL的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

6.8K31

JavaFX 11发行说明

某些情况下,该说明提供了有关问题更改的其他详细信息的链接。 从JDK 11开始,JavaFX模块与JDK分开提供。这些发行说明涵盖了独立的JavaFX 11发行版。...JavaFX 11需要JDK 10(必须是OpenJDK版本)JDK 11.建议使用JDK 11。...默认值现在为300毫秒。 repeatDelay:第一个值步骤之后,每个连续步骤必须按下鼠标的持续时间。默认值现在为60毫秒。 有关更多信息,请参阅JDK-8167096。...将默认GTK版本切换为3 现在,JavaFX将在存在gtk3库的Linux平台上使用GTK 3。JavaFX 11之前,GTK 2库是默认的。这与JDK 11AWT的默认值相匹配。...-8191885 [MacOS] JavaFX主窗口无法MacOS从全屏模式返回 窗口的工具包 JDK-8196031 FX Robot mouseMoveWindows 10 1709上使用HiDPI

6.5K60

JavaFX WebView概述,很强大,内置了类似Electron的功能

WebView运行的JavaScript可以调用Java API,而Java API可以调用在WebView运行的JavaScript。...它封装了一个WebEngine对象,将HTML内容合并到应用程序的场景,并提供了应用效果和转换的属性和方法。 WebView对象上调用的getEngine()方法将返回与其关联的Web引擎。...构成嵌入式浏览器的类位于javafx.scene.web包。...计划后台作业后,立即返回启动加载的方法。 要跟踪进度和/取消作业,我们可以使用getLoadWorker()  方法 可用的  Worker实例  。...7.将   JavaScript值映射到Java对象: JavaScript值使用显而易见的Java类表示:null变为Java null;布尔值变为java.lang.Boolean; 字符串变成java.lang.String

10.1K41

Using JavaFX UI Controls 12 Table View

很多JavaFX SDK API种的类为表格表单呈现数据。JavaFX 应用对创建表格最重要的是TableView, TableColumn和TableCell这三个类。...例子 12-1, 表格组件被添加到 VBox  的布局容器,然而你也可以直接将其添加到应用场景。 例子 12-1定义了3列将用来存放地址簿的信息:一个联系人的 姓和名以及电子邮箱地址。...这样如果调用 getFirstName方法经返回firstName属性的值,可以通过调用setFirstName方法来为这个属性赋值 。 在数据模型已经Person 类呈现以后。...用户可以对表格的多列进行排序,同样也可以指定每列数据排序操作的优先级。如果想多行排列,用户按住Shift的同时点击想要排序的每一列的列头。...例12-12,数据行 hash map(哈希map) 展现了TableView对象的一个单行。

11.3K20

躁!DJ 风格 Java 桌面音乐播放器

javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls 然后点击 Run Main Debug Main 就可以本地运行项目了... JavaFX ,Stage 是应用程序窗口,其中包含称为 Scene 的空间。Scene 包含界面的组件,如 UI 空间(按钮,输入框,复选框),容器等。...Color(0.32,0.6,0.32,1); grid.setBackground(new Background(new BackgroundFill(backgroundColor,null...,null))); Text sceneTitle = new Text("欢迎进入系统"); sceneTitle.setFont(Font.font("Tahoma"...上面代码的意思是:创建一个面板,然后面板上添加标签,输入框和按钮,并对按钮添加绑定事件,然后把这个面板添加到场景,这个窗口就完成了。 五、最后 Java 桌面 DJ 音乐播放器是真的香!

3.8K20

Using JavaFX UI Controls 18 超链接

图18-1 展示了默认超链接实现的3状态 图 18-1 超链接组件的3状态 创建一个超链接 例 18-1 展示创建超链接的代码片段 例18-1 典型的超链接 Hyperlink link...链接本地内容 图18-2展示应用从本地目录渲染图片 图 18-2 显示图片 展示例 18-2的源代码: 例 18-2利用超链接浏览图片 import javafx.application.Application...{ hpls[i].setVisited(false); selectedImage.setImage(null...因此图片数组的对应的图片设置到selectedImage 变量。当用户点击一个超链接,超链接将显示被访问过。你可以通过调用setVisited 方法来刷新超链接。...链接远程内容 在你的JavaFx程序,通过嵌入WebView 浏览器组件来渲染 HTML内容。WebView 组件提供浏览网页的基本功能。

1.5K50

javafx的使用原理是什么?javafx与java有什么不同?

javafx是一种编程语言,使用这种语言能够开发丰富的网络程序,目前javafx包括两种类别,一种是javafx脚本,另一种是javafx mobile(可以运行于手机等移动设备),以后的发展javafx...那么javafx的使用原理是什么?javafx与java有什么不同? image.png 一、javafx的使用原理是什么?...javafx这种编程语言中,属性表示为形掺和返回值,目标类的类则表示为类的成员参数与成员参数操作本身。“this”表示目标的属性名称,“return”则代表返回值的属性名称。...从class,操作者能够获得反射的、一致的操作,而如果操作被反射的话,就能够使目标对象作为第一个参数、其他对象作为备用参数进行调用。以上就是javafx的使用原理。...javafx是一种静态性的编程语言,属于java整体的一部分,其基本特征为一等函数、增量式求式、列表推导等,javafx脚本能够为操作者提供多种多样的操作,包括设置动画、设置属性等;java也是一种编程语言

4.6K30

手拉手JavaFX场景

JAVAFXjdk1.8以上引入javafx类库JDK11+JAVAFX(eclipse)方式一方式二直接引入避免​另一种编写方式小知识点setHgrowsetVgrow、需要精确布局时,应重写layoutChildren...()值摆放每一个子节点setHgrow(hbox,Priority.ALWAYS);javafx有4控件来表示多项数据ListView:列表TreeView:树TableView:表格TreeTableView...DEFAULT 光标默认值Cursor DISAPPEAR 光标消失Cursor CLOSED_HAND 光标闭合手Contextmenudemo 上下文菜单演示Cursor E _ RESIZE...extends Node> c) { //元素个数(当删除增加时触发监听器) System.out.println...放置顶部,底部,左侧,右侧和中心区域中的节点的默认对齐方式如下:● 顶部: Pos.TOP_LEFT● 底部: Pos.BOTTOM_LEFT● 左侧: Pos.TOP_LEFT● 右侧: Pos.TOP_RIGHT

13900

javaFX(二)-使用gradle+jdk14创建javafx程序

在上一篇文章,我们一起学习了jlink和jdk14的模块化. 本篇文章,我们一起来学习gradle来新建一个javafx的Hello World 程序....然后做着做着,就有了小刀平时朋友圈发的工具. 然后现在陆陆续续写了几个月了, 自我感觉对javaFX的一些常用的方法和坑都踩了一些,所以开始更新javaFX系列....import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.VBox?...sunflower.fxml")); fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory()); Parent root = null...开源的代码 其实我一直不想在文章写很多的代码,平常小刀朋友圈发的那个工具,已经开源, 而且也有小伙伴下载下来成功运行了, 所以,,,不要纠结上面的代码,,可以直接下载这个就行 https://github.com

4.1K20

JQuery Ztree 树插件配置与应用小结

都不影响按下 Ctrl Cmd 键可以让已选中的节点取消选中状态( 取消选中状态可以参考 setting.view.autoCancelSelected ) setting 举例: 禁止多点同时选中的功能...addNodes 方法输入的 newNodes 数据是否采用简单数据模式 (Array) 不需要用户再把数据库取出的 List 强行转换为复杂的 JSON 嵌套格式 默认值:false 参数:true...默认值null 参数说明 treeIdString 对应 zTree 的 treeId,便于用户操控 treeNodeJSON 将要删除的节点 JSON 数据对象 返回值 true / false...默认值null 参数说明 treeIdString 对应 zTree 的 treeId,便于用户操控 treeNodeJSON 将要进入编辑名称状态的节点 JSON 数据对象 返回值 true /...2、如果需要异步加载根节点,可以设置为 null [ ] 3、使用简单数据模式,请参考 setting.data.simpleData 内的属性说明 返回值JSON zTree 对象,提供操作 zTree

7K40
领券