API break in 2.1 JavaFXBuilderFactory
Greg Brown
greg.x.brown at oracle.com
Tue Jan 3 06:39:18 PST 2012
Not sure why you are seeing that exception. I don't have a problem loading that markup using the default constructor. The default constructor just invokes JavaFXBuilderFactory(ClassLoader, boolean) and passes false as the second argument.
FWIW, these FXMLLoader constructors now create a default JavaFXBuilderFactory by default, so you may not actually need to create your own instance:
FXMLLoader()
FXMLLoader(URL)
FXMLLoader(URL, ResourceBundle)
G
On Dec 31, 2011, at 8:37 AM, Tom Schindl wrote:
> Hi,
>
> It looks like the JavaFXBuilderFactory lost the
> JavaFXBuilderFactory(boolean) constructor.
>
> I've been this constructor like this "new JavaFXBuilderFactory(false)"
> because with the default one (new JavaFXBuilderFactory()) an FXML-File
> like this:
>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!--
>> Do not edit this file it is generated by e(fx)clipse from /at/bestsolution/efxclipse/testcases/fxgraph/BindingTest.fxgraph
>> -->
>>
>> <?import java.lang.*?>
>> <?import javafx.scene.control.Label?>
>> <?import javafx.scene.control.TextField?>
>> <?import javafx.scene.layout.HBox?>
>>
>> <HBox xmlns:fx="http://javafx.com/fxml">
>>
>> <children>
>> <Label>
>> <text>Binding</text>
>> </Label>
>> <TextField fx:id="field1"/>
>> <TextField text="${field1.text}"/>
>> </children>
>>
>> </HBox>
>
> Fails with an exception like this.
>
>> WARNUNG: Method text failed
>> java.lang.NullPointerException
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at javafx.fxml.JavaFXBuilder$ObjectBuilder.put(JavaFXBuilderFactory.java:237)
>> at javafx.fxml.JavaFXBuilder$ObjectBuilder.put(JavaFXBuilderFactory.java:138)
>> at javafx.fxml.FXMLLoader$ExpressionTargetMapping.changed(FXMLLoader.java:1127)
>> at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:181)
>> at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>> at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:43)
>> at com.sun.javafx.fxml.expression.ExpressionBinding$ValueProperty.fireValueChangedEvent(ExpressionBinding.java:87)
>> at com.sun.javafx.fxml.expression.ExpressionBinding$KeyPathMonitor$2.onChanged(ExpressionBinding.java:154)
>> at com.sun.javafx.fxml.BeanAdapter$PropertyInvalidationListener.invalidated(BeanAdapter.java:170)
>> at com.sun.javafx.binding.ExpressionHelper$MultipleInvalidation.fireValueChangedEvent(ExpressionHelper.java:301)
>> at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>> at javafx.scene.control.TextInputControl$TextProperty.fireValueChangedEvent(TextInputControl.java:991)
>> at javafx.scene.control.TextInputControl$TextProperty.markInvalid(TextInputControl.java:995)
>> at javafx.scene.control.TextInputControl$TextProperty.invalidate(TextInputControl.java:935)
>> at javafx.scene.control.TextInputControl$TextProperty.access$100(TextInputControl.java:907)
>> at javafx.scene.control.TextInputControl$1.invalidated(TextInputControl.java:109)
>> at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:140)
>> at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>> at javafx.scene.control.TextField$TextFieldContent.insert(TextField.java:70)
>> at javafx.scene.control.TextInputControl.replaceText(TextInputControl.java:338)
>> at com.sun.javafx.scene.control.skin.TextFieldSkin.replaceText(TextFieldSkin.java:407)
>> at com.sun.javafx.scene.control.behavior.TextFieldBehavior.replaceText(TextFieldBehavior.java:134)
>> at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.defaultKeyTyped(TextInputControlBehavior.java:185)
>> at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callAction(TextInputControlBehavior.java:114)
>> at com.sun.javafx.scene.control.behavior.BehaviorBase.callActionForEvent(BehaviorBase.java:165)
>> at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callActionForEvent(TextInputControlBehavior.java:107)
>> at com.sun.javafx.scene.control.behavior.BehaviorBase$1.handle(BehaviorBase.java:127)
>> at com.sun.javafx.scene.control.behavior.BehaviorBase$1.handle(BehaviorBase.java:125)
>> at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:56)
>> at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:162)
>> at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:115)
>> at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
>> at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
>> at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>> at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
>> at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>> at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:47)
>> at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
>> at javafx.event.Event.fireEvent(Event.java:171)
>> at javafx.scene.Scene$KeyHandler.process(Scene.java:2938)
>> at javafx.scene.Scene$KeyHandler.access$1700(Scene.java:2868)
>> at javafx.scene.Scene.impl_processKeyEvent(Scene.java:1431)
>> at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:1862)
>> at com.sun.javafx.tk.quantum.EmbeddedScene$3.run(EmbeddedScene.java:366)
>> at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:119)
>> at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
>> at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2545)
>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752)
>> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:977)
>> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>> at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:893)
>> at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:91)
>> at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:565)
>> at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>> at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:520)
>> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
>> at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
>> at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
>> at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>> at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>> at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:352)
>> at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:597)
>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:624)
>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:579)
>> at org.eclipse.equinox.launcher.Main.run(Main.java:1433)
>> at org.eclipse.equinox.launcher.Main.main(Main.java:1409)
>
> Why has the constructor been removed? Should binding work also if one
> uses the default constructor?
>
> Tom
>
> --
> B e s t S o l u t i o n . a t EDV Systemhaus GmbH
> ------------------------------------------------------------------------
> tom schindl geschäftsführer/CEO
> ------------------------------------------------------------------------
> eduard-bodem-gasse 5-7/1 A-6020 innsbruck fax ++43 512 935833
> http://www.BestSolution.at phone ++43 512 935834
More information about the openjfx-dev
mailing list