5

JFTTextArea and JFXButton works but why not the JFXTextField?

I have added foenix Library so I have got all the JFXTextField But i am not able to place JFXTextField in the SceneBuilder !! enter image description here

Here I have added the library in the project structure. enter image description here

If i forcefully add JFXTextField in the sample.xml in the text mode, It doesn't show compiler error But instead shows

Unable to make boolean java.lang.reflect.AccessibleObject.setAccessible0(boolean) accessible: module java.base does not "opens java.lang.reflect" to module com.jfoenix

The complete Error looks like:

java.lang.reflect.InaccessibleObjectException: Unable to make boolean java.lang.reflect.AccessibleObject.setAccessible0(boolean) accessible: module java.base does not "opens java.lang.reflect" to module com.jfoenix
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    at com.jfoenix/com.jfoenix.adapters.ReflectionHelper.<clinit>(ReflectionHelper.java:48)
    at com.jfoenix/com.jfoenix.skins.JFXTextFieldSkin.<init>(JFXTextFieldSkin.java:59)
    at com.jfoenix/com.jfoenix.controls.JFXTextField.createDefaultSkin(JFXTextField.java:69)
    at javafx.controls/javafx.scene.control.Control.doProcessCSS(Control.java:897)
    at javafx.controls/javafx.scene.control.Control$1.doProcessCSS(Control.java:89)
    at javafx.controls/com.sun.javafx.scene.control.ControlHelper.processCSSImpl(ControlHelper.java:67)
    at javafx.graphics/com.sun.javafx.scene.NodeHelper.processCSS(NodeHelper.java:145)
    at javafx.graphics/javafx.scene.Parent.doProcessCSS(Parent.java:1400)
    at javafx.graphics/javafx.scene.Parent$1.doProcessCSS(Parent.java:125)
    at javafx.graphics/com.sun.javafx.scene.ParentHelper.processCSSImpl(ParentHelper.java:98)
    at javafx.graphics/com.sun.javafx.scene.NodeHelper.processCSS(NodeHelper.java:145)
    at javafx.graphics/javafx.scene.Node.processCSS(Node.java:9547)
    at javafx.graphics/javafx.scene.Scene.doCSSPass(Scene.java:569)
    at javafx.graphics/javafx.scene.Scene.preferredSize(Scene.java:1747)
    at javafx.graphics/javafx.scene.Scene$2.preferredSize(Scene.java:393)
    at javafx.graphics/com.sun.javafx.scene.SceneHelper.preferredSize(SceneHelper.java:66)
    at javafx.graphics/javafx.stage.Window$12.invalidated(Window.java:1111)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:110)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:145)
    at javafx.graphics/javafx.stage.Window.setShowing(Window.java:1187)
    at javafx.graphics/javafx.stage.Window.show(Window.java:1202)
    at javafx.graphics/javafx.stage.Stage.show(Stage.java:273)
    at Material.Design.Scene.Builder/sample.Main.start(Main.java:16)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:474)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:446)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:831)
Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.Node.getLayoutBounds()" because "this.textNode" is null
    at com.jfoenix/com.jfoenix.skins.JFXTextFieldSkin.updateTextPos(JFXTextFieldSkin.java:109)
    at com.jfoenix/com.jfoenix.skins.JFXTextFieldSkin.layoutChildren(JFXTextFieldSkin.java:93)
    at javafx.controls/javafx.scene.control.Control.layoutChildren(Control.java:601)
    at javafx.graphics/javafx.scene.Parent.layout(Parent.java:1207)
    at javafx.graphics/javafx.scene.Parent.layout(Parent.java:1214)
    at javafx.graphics/javafx.scene.Scene.doLayoutPass(Scene.java:576)
    at javafx.graphics/javafx.scene.Scene.preferredSize(Scene.java:1750)
    at javafx.graphics/javafx.scene.Scene$2.preferredSize(Scene.java:393)
    at javafx.graphics/com.sun.javafx.scene.SceneHelper.preferredSize(SceneHelper.java:66)
    at javafx.graphics/javafx.stage.Window$12.invalidated(Window.java:1111)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:110)
    at javafx.base/javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:145)
    at javafx.graphics/javafx.stage.Window.setShowing(Window.java:1187)
    at javafx.graphics/javafx.stage.Window.show(Window.java:1202)
    at javafx.graphics/javafx.stage.Stage.show(Stage.java:273)
    at Material.Design.Scene.Builder/sample.Main.start(Main.java:16)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:474)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:447)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:446)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    ... 1 more
Exception running application sample.Main

Process finished with exit code 1

I even Tried with this link Stack OverFlow: Reflection error But couldn't very well connect :(

My sample.xml goes like so:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <children>
      <Button fx:id="button" layoutX="494.0" layoutY="187.0" mnemonicParsing="false" prefHeight="26.0" prefWidth="74.0" text="Button" />
      <TextField fx:id="textField" layoutX="44.0" layoutY="140.0" />
      <JFXTextField fx:id="textField1" layoutX="433.0" layoutY="140.0" promptText="Type in here">
         <effect>
            <InnerShadow />
         </effect></JFXTextField>
      <JFXTextField />
      <JFXTextArea fx:id="JFXtextArea" layoutX="51.0" prefHeight="116.0" prefWidth="518.0" />
      <TextArea fx:id="textArea" layoutX="51.0" layoutY="245.0" prefHeight="130.0" prefWidth="518.0" />
      <JFXButton fx:id="buutton" layoutX="44.0" layoutY="187.0" prefHeight="26.0" prefWidth="99.0" text="Button">
   </children>
</AnchorPane>
      
Krishna Acharya
  • 542
  • 3
  • 18
  • 1
    Have you tried changing the AnchorPane to StackPane for example? – Tomino May 31 '21 at 07:52
  • 1
    I think [that web page](https://jaxenter.com/netbeans/making-custom-javafx-controls-available-in-the-scene-builder) can provide some information for you – 0009laH May 31 '21 at 08:07
  • @Tomino I tried with stackPane even i am getting the same issue – Krishna Acharya May 31 '21 at 08:08
  • 1
    The only thing I can recommend is to implement your custom component via code directly, not Scene Builder/FXML. – Tomino May 31 '21 at 08:28
  • @Tomino Did that even, Got reflect.long.exception, as i have mentoined in the question – Krishna Acharya May 31 '21 at 08:42
  • @Tomino Can you please upvote , So that my thread gets priorotized.. :) – Krishna Acharya May 31 '21 at 08:43
  • 1
    Can you please show us your code when you implemented it manually via code? I am looking at this exception: "Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.Node.getLayoutBounds()" because "this.textNode" is null", can you make sure that your textNode is not null? – Tomino May 31 '21 at 09:01
  • https://stackoverflow.com/questions/41265266/how-to-solve-inaccessibleobjectexception-unable-to-make-member-accessible-m I guess this has the solution but i couldn't connect the dots. – Krishna Acharya May 31 '21 at 10:31
  • @Tomino I have put the xml code ..please check the same – Krishna Acharya May 31 '21 at 10:32

5 Answers5

2

I have the latest version of java and I am using the latest version of JFoenix and I am getting the same InaccessibleObjectException as you. There seems to be a problem on their side, I have just contacted them and we will have to wait until they fix it. Link to the issue: Not able to add JFXTextField in Scene Builder 16.0.0 #1205

Tomino
  • 445
  • 2
  • 15
1

Please use jfoenix 9.0.1 and not 9.0.10 from marven for any jdk/scenebuilder version. It worked for me

John Kiiru
  • 11
  • 2
0

I had the same problem while using SceneBuilder 16.0 and JFoenix 9.0.10. The solution I tried is using an earlier version of SceneBuilder, I downloaded SceneBuilder 11.0 and it worked.

This bug has not been corrected by JFoenix yet.

0

Finally i found the answer after many reserach,

The answer is , The JFonenix is not yet compatible with updated jdk As it is compatlible only with Jdk 1.8 i.e JAVA SE 8th edition

Make the project selecting jdk 1.8, then it will work :)

Download Java 8 From this link below

https://www.oracle.com/in/java/technologies/javase/javase8-archive-downloads.html

Krishna Acharya
  • 542
  • 3
  • 18
0

downloaded SceneBuilder 15.0.0 and use JFoenix 9.0.10 and use java-sdk-15.0.1 and java jdk 15.0.0 or jdk 15.0.1 and add the following settings in your arguments VM :

--add-exports javafx.graphics/com.sun.javafx.scene=com.jfoenix --add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix --add-exports javafx.controls/com.sun.javafx.scene.control=com.jfoenix --add-exports javafx.base/com.sun.javafx.binding=com.jfoenix --add-exports javafx.base/com.sun.javafx.event=com.jfoenix --add-exports javafx.graphics/com.sun.javafx.stage=com.jfoenix --add-opens=java.base/java.lang.reflect=com.jfoenix

Lajos Arpad
  • 53,986
  • 28
  • 88
  • 159
Slimane
  • 1
  • 1