JavaFX 8 日期选择器功能

2024-03-14

我刚刚开始使用新的 JavaFX 8 控件DatePicker. In DatePicker 用户体验文档 https://wiki.openjdk.java.net/display/OpenJFX/DatePicker+User+Experience+Documentation,据说它有几个很酷的功能,我希望在我的 GUI 应用程序中拥有这些功能:

  1. 我想更改格式mm/dd/yyyy to dd/mm/yyyy.
  2. 我想限制可以选择的日期。用户只能选择从今天到明年的同一天。
  3. 除原始日期外还显示回历日期:

如何实现这些功能呢? JavaDoc 没有对它们说太多。


这是完整的实现:

import java.net.URL;
import java.time.LocalDate;
import java.time.chrono.HijrahChronology;
import java.time.format.DateTimeFormatter;
import java.util.ResourceBundle;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.DateCell;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.util.Callback;
import javafx.util.StringConverter;

/**
 *
 * @author Fouad
 */
public class FXMLDocumentController implements Initializable
{
    @FXML
    private DatePicker dpDate;

    @Override
    public void initialize(URL url, ResourceBundle rb)
    {
        dpDate.setValue(LocalDate.now());
        dpDate.setChronology(HijrahChronology.INSTANCE);

        Callback<DatePicker, DateCell> dayCellFactory = dp -> new DateCell()
        {
            @Override
            public void updateItem(LocalDate item, boolean empty)
            {
                super.updateItem(item, empty);

                if(item.isBefore(LocalDate.now()) || item.isAfter(LocalDate.now().plusYears(1)))
                {
                    setStyle("-fx-background-color: #ffc0cb;");
                    Platform.runLater(() -> setDisable(true));

                    /* When Hijri Dates are shown, setDisable() doesn't work. Here is a workaround */
                    //addEventFilter(MouseEvent.MOUSE_CLICKED, e -> e.consume());
                }
            }
        };

        StringConverter<LocalDate> converter = new StringConverter<LocalDate>()
        {
            final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");

            @Override
            public String toString(LocalDate date)
            {
                if(date != null) return dateFormatter.format(date);
                else return "";
            }

            @Override
            public LocalDate fromString(String string)
            {
                if(string != null && !string.isEmpty())
                {
                    LocalDate date = LocalDate.parse(string, dateFormatter);

                    if(date.isBefore(LocalDate.now()) || date.isAfter(LocalDate.now().plusYears(1)))
                    {
                        return dpDate.getValue();
                    }
                    else return date;
                }
                else return null;
            }
        };

        dpDate.setDayCellFactory(dayCellFactory);
        dpDate.setConverter(converter);
        dpDate.setPromptText("dd/MM/yyyy");
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 8 日期选择器功能 的相关文章

  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • Swift 4 从错误中获取错误代码

    我有一个定义为错误的变量 这就是我打印它时的样子 Optional Error Domain com apple LocalAuthentication Code 2 Canceled by user UserInfo NSLocalize
  • iOS 模拟器权限被拒绝并且不显示权限警报对话框

    我正在开发 iOS 模拟器 并且面临请求权限的问题 我的应用程序运行正常 可以访问照片库 相机和位置服务 但是安装新的 XCode 8 1 后 我在模拟器上运行该应用程序 该应用程序不再允许使用照片库或相机或位置服务 我尝试以编程方式请求权
  • 将文件路径拖放到 Java Swing JTextField

    Using 这个问题 https stackoverflow com questions 811248 how can i use drag and drop in swing to get file path 我创建了下面的类 它处理将文
  • 将图片读取为灰度numpy数组,并保存回来

    我尝试了以下操作 希望看到源图像的灰度版本 from PIL import Image import numpy as np img Image open img png convert L arr np array img getdata
  • Server.Transfer() 对比服务器.执行()

    我对调用页面 第一页 和调用者页面 新页面 的请求哪个更好或效果感到困惑 我注意到在这两种情况下 浏览器中的 URL 仍然是首页 URL 不会刷新到新页面 URL 因为浏览器没有被请求这样做 任何值得注意的评论 原文位于 Server Tr
  • 强制虚拟方法表中函数的顺序?

    如何控制虚拟表中虚拟函数的顺序 它们的排列顺序是否与声明的顺序相同 当继承带有虚表的类时 继承类的虚表是基类的扩展 还是仅用继承类的虚函数创建的全新虚表 即虚拟表仍然位于类的索引 0x0 处吗 a 就标准而言 你不能 事实上你甚至不能假设
  • Sql Server 2005插入查询中的单引号和双引号

    地址文本框中有单引号和双引号 如何插入数据库 我用的是SQL2005 我的代码如下 str exec sp cust reg customer Cust Id customer Cust Name customer Gender custo
  • Java 中的特殊字符 \0 {NULL}

    如何替换字符串中的 0 NUL String b 2012yyyy06mm sth what i want String c 2 0 0 0012yyyy06mm String d c replaceAll 0 not work Strin
  • 如何调试 Ionic WebApp?

    我想在 WebStorm 中调试我的离子应用程序 我可以在浏览器中运行该应用程序 但我该如何调试呢 我试过 ionic serve debug这似乎不会触发任何调试 当应用程序在浏览器中运行时 如何调试它 使用 Chrome 您可以输入铬
  • 无法在java servlet中获取会话

    我是第一次使用 servlet 但我取得了很大的进步 我的 servlet 运行良好 因此 我决定采用一种身份验证机制 如果用户提供正确的密码和 ID 则会创建一个会话 但会议对我来说是全新的 所以我不太明白这个逻辑 但我已经开始理解了 正
  • Android:如何将图像资源与R.drawable.imagename进行比较?

    我正在开发一个示例应用程序 其中我需要在 onClick 侦听器中获取图像视图的资源 并将其与我知道存在的图像源进行比较 如果资源相同 我想启动另一个意图 我现在面临的问题是访问 ImageView 及其资源 Id 整数 以与可绘制资源进行
  • 检测 jQuery UI 的可拖动功能悬停在什么上方

    我试图让拖动的元素检测它悬停在stopjQuery 的 UI 可拖动功能的事件 这是我的尝试 但没有成功 artwork draggable stop function e ui ui mouseover function f if f t
  • Swift 2:“Bool”无法转换为“BooleanLiteralConvertible”

    我创建了一个应用程序XCode 6 今天我下载了XCode 7它已将我的应用程序更新为Swift 2 错误有很多 但现在只有一个我无法解决 我不知道为什么 但是Xcode不喜欢任何Bool选项animated并显示此错误 Bool 不能转换
  • FindByIdentity 在 ASP.NET Web 应用程序中失败并出现 PrcipalOperationException

    我在内部 Web 应用程序中使用 System DirectoryServices AccountManagement 时遇到问题 该错误不是很具有描述性 但发生的情况如下 当我尝试验证 AD 中是否存在提供的用户 ID 时 我使用以下代码
  • JAXB 异常:此上下文未知类

    当我调用一个特定的静态服务方法时 该方法是使用CXF 我收到以下错误 有人知道为什么以及如何解决它吗 发生 JAXBException 类 com octory ws dto 配置文件Dto也没有任何 其超类的已知 语境 服务方法及相关DT
  • JPA CriteriaBuilder 将合取条件转换为析取条件

    我需要将此查询复制到JPA 标准生成器 code where article client id 1 and article price gt 0 and article code like this is statement or art
  • Windows批处理:睡眠[重复]

    这个问题在这里已经有答案了 如何让 Windows 批处理脚本等待几秒钟 sleep and wait似乎不起作用 无法识别的命令 你可以试试 ping n XXX 127 0 0 1 gt nul 其中 XXX 是等待的秒数加一
  • JPA CriteriaQuery 计算用于 where 谓词的日期时间差

    我正在尝试从数据库中选择两个字段之间的时间差小于或大于某个值的实体 在标准 SQL 中 这可以使用 TIMESTAMPDIFF 函数简单地完成 SELECT from run where TIMESTAMPDIFF SECOND run e
  • numpy 将 RGB 图像转换为 YIQ 颜色空间

    对于一个类 我需要将 RGB 图像转换为 YIQ 我们被告知可以通过以下方式进行转换 我开始编写一个带有循环的凌乱代码来进行矩阵乘法 然后我发现了一个函数 skimage color yiq2rgb imYIQ 当我往里面看他们在做什么时
  • JavaFX 8 日期选择器功能

    我刚刚开始使用新的 JavaFX 8 控件DatePicker In DatePicker 用户体验文档 https wiki openjdk java net display OpenJFX DatePicker User Experie