stack trace - JavaFX Date Picker specific format error -
i've created sample application uses javafx-8 date picker. works fine on default pattern on specific pattern throws exception. i'm trying convert on 'dd-mm-yyyy' pattern on default.
here source file of program please take look.
datepickercontroller.java
package javafx.datepicker; import java.time.localdate; import java.time.format.datetimeformatter; import java.time.format.datetimeformatterbuilder; import javafx.fxml.fxml; import javafx.scene.control.button; import javafx.scene.control.datepicker; import javafx.scene.control.textarea; import javafx.util.stringconverter; public class datepickercontroller { @fxml private datepicker dp; @fxml private button btn; @fxml private textarea ta; public void initialize() { string pattern = "dd-mm-yyyy"; dp.setprompttext(pattern); try { dp.setconverter(new stringconverter<localdate>() { datetimeformatter dtf = datetimeformatter.ofpattern(pattern); @override public string tostring(localdate object) { if (object == null) { return null; } return dtf.format(object); } @override public localdate fromstring(string string) { if (string != null & !string.isempty()) { return localdate.parse(string, dtf); } return null; } }); } catch (exception e) { e.printstacktrace(); } } }
and here main class
javafxdatepicker.java
package javafx.datepicker; import javafx.application.application; import javafx.fxml.fxmlloader; import javafx.scene.parent; import javafx.scene.scene; import javafx.stage.stage; public class javafxdatepicker extends application { public static void main(string... args) { launch(args); } @override public void start(stage st) { try { parent root = fxmlloader.load(getclass().getresource("/javafx/datepicker/datepicker.fxml")); scene sc = new scene(root); st.setscene(sc); st.settitle("javafx date picker"); st.show(); } catch (exception e) { e.printstacktrace(); } } }
and here fxml file
datepicker.fxml
<?xml version="1.0" encoding="utf-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <anchorpane id="anchorpane" prefheight="247.0" prefwidth="372.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="javafx.datepicker.datepickercontroller"> <children> <datepicker fx:id="dp" layoutx="50.0" layouty="51.0" prefheight="25.0" prefwidth="273.0" /> <button fx:id="btn" layoutx="50.0" layouty="99.0" mnemonicparsing="false" prefheight="25.0" prefwidth="273.0" text="click" /> <textarea fx:id="ta" layoutx="50.0" layouty="133.0" prefheight="89.0" prefwidth="273.0" /> </children> </anchorpane>
and here stacktarce of error
exception in thread "javafx application thread" java.time.datetimeexception: field dayofyear cannot printed value 196 exceeds maximum print width of 2 @ java.time.format.datetimeformatterbuilder$numberprinterparser.format(datetimeformatterbuilder.java:2548) @ java.time.format.datetimeformatterbuilder$compositeprinterparser.format(datetimeformatterbuilder.java:2179) @ java.time.format.datetimeformatter.formatto(datetimeformatter.java:1746) @ java.time.format.datetimeformatter.format(datetimeformatter.java:1720) @ javafx.datepicker.datepickercontroller$1.tostring(datepickercontroller.java:45) @ javafx.datepicker.datepickercontroller$1.tostring(datepickercontroller.java:37) @ com.sun.javafx.scene.control.skin.comboboxpopupcontrol.updatedisplaynode(comboboxpopupcontrol.java:424) @ com.sun.javafx.scene.control.skin.datepickerskin.handlecontrolpropertychanged(datepickerskin.java:141) @ com.sun.javafx.scene.control.skin.behaviorskinbase.lambda$registerchangelistener$61(behaviorskinbase.java:197) @ com.sun.javafx.scene.control.multiplepropertychangelistenerhandler$1.changed(multiplepropertychangelistenerhandler.java:55) @ javafx.beans.value.weakchangelistener.changed(weakchangelistener.java:89) @ com.sun.javafx.binding.expressionhelper$generic.firevaluechangedevent(expressionhelper.java:361) @ com.sun.javafx.binding.expressionhelper.firevaluechangedevent(expressionhelper.java:81) @ javafx.beans.property.objectpropertybase.firevaluechangedevent(objectpropertybase.java:105) @ javafx.beans.property.objectpropertybase.markinvalid(objectpropertybase.java:112) @ javafx.beans.property.objectpropertybase.set(objectpropertybase.java:146) @ javafx.scene.control.comboboxbase.setvalue(comboboxbase.java:150) @ com.sun.javafx.scene.control.skin.datepickercontent.selectdaycell(datepickercontent.java:689) @ com.sun.javafx.scene.control.skin.datepickercontent.lambda$createdaycells$174(datepickercontent.java:731) @ com.sun.javafx.event.compositeeventhandler$normaleventhandlerrecord.handlebubblingevent(compositeeventhandler.java:218) @ com.sun.javafx.event.compositeeventhandler.dispatchbubblingevent(compositeeventhandler.java:80) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:238) @ com.sun.javafx.event.eventhandlermanager.dispatchbubblingevent(eventhandlermanager.java:191) @ com.sun.javafx.event.compositeeventdispatcher.dispatchbubblingevent(compositeeventdispatcher.java:59) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:58) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.basiceventdispatcher.dispatchevent(basiceventdispatcher.java:56) @ com.sun.javafx.event.eventdispatchchainimpl.dispatchevent(eventdispatchchainimpl.java:114) @ com.sun.javafx.event.eventutil.fireeventimpl(eventutil.java:74) @ com.sun.javafx.event.eventutil.fireevent(eventutil.java:54) @ javafx.event.event.fireevent(event.java:198) @ javafx.scene.scene$clickgenerator.postprocess(scene.java:3470) @ javafx.scene.scene$clickgenerator.access$8100(scene.java:3398) @ javafx.scene.scene$mousehandler.process(scene.java:3766) @ javafx.scene.scene$mousehandler.access$1500(scene.java:3485) @ javafx.scene.scene.impl_processmouseevent(scene.java:1762) @ javafx.scene.scene$scenepeerlistener.mouseevent(scene.java:2494) @ com.sun.javafx.tk.quantum.glassvieweventhandler$mouseeventnotification.run(glassvieweventhandler.java:380) @ com.sun.javafx.tk.quantum.glassvieweventhandler$mouseeventnotification.run(glassvieweventhandler.java:294) @ java.security.accesscontroller.doprivileged(native method) @ com.sun.javafx.tk.quantum.glassvieweventhandler.lambda$handlemouseevent$354(glassvieweventhandler.java:416) @ com.sun.javafx.tk.quantum.quantumtoolkit.runwithoutrenderlock(quantumtoolkit.java:389) @ com.sun.javafx.tk.quantum.glassvieweventhandler.handlemouseevent(glassvieweventhandler.java:415) @ com.sun.glass.ui.view.handlemouseevent(view.java:555) @ com.sun.glass.ui.view.notifymouse(view.java:937) @ com.sun.glass.ui.win.winapplication._runloop(native method) @ com.sun.glass.ui.win.winapplication.lambda$null$148(winapplication.java:191) @ java.lang.thread.run(thread.java:745)
i tried every method resolve bad luck.
please give me suggestions resolve , explain error.
i think want following:
string pattern = "dd-mm-yyyy";
Comments
Post a Comment