Other B4J v4.00 BETA is available for download

Erel

B4X founder
Staff member
Licensed User
Longtime User
B4J v4.00 BETA is now available for download.

New features and improvements:

UI Apps
  • DatePicker control:

    SS-2015-12-16_11.28.30.png



  • SplitPane: https://www.b4x.com/android/forum/threads/splitpane-tutorial.61418/

    SS-2015-12-16_11.29.46.png


  • Msgbox, Msgbox2, InputList (accessible through the fx object): https://www.b4x.com/android/forum/threads/msgbox-inputlist.61461/

    SS-2015-12-16_11.30.56.png


  • Shadows (designer feature):

    SS-2015-12-16_11.32.39.png


  • ContorlsFX library was updated.
Server solutions
Other
  • Debugger performance improvements.
  • IDE bug fixes.
Starting from v4.00 the minimum version for UI apps is Java 8.40 and for server solutions is Java 8 (make sure to update it under Tools - Configure Paths).

You can download the beta version here: www.b4x.com/b4j/files/beta.exe

Please post any issue you encounter in a new thread.
 
Last edited:

Ed Brown

Active Member
Licensed User
Longtime User
Hi @Erel

It might be worth mentioning that the path to the java.exe needs to be updated in Tools -> Configure Paths as well. I just discovered bad things happening until I realised I needed to update the path.
 
Upvote 0

BPak

Active Member
Licensed User
Longtime User
Thank you for the SplitPane Erel. It is really great and just what I have needed for my programs.
 
Upvote 0

ta1dr

Member
Licensed User
Longtime User
I dont know what's happen I wrote some code for raspberry pi 2 with B4J 3.70 ver.
I installed 4.00 it work my code on PC but not work on raspberry Pi 2 ( before work old verision 3.70)
I uninstall and reinstall 3.70 not any change not work on raspberry
but interesting , B4J 3.70 installed (old time installedd not new ) other laptop I didnt any update and upgrade all my code work on raspberry pi 2 ( via bridge or stand alone)...

B4X:
Program started.
glGetError 0x505
java.lang.NullPointerException
    at com.sun.prism.impl.BaseContext.getOvalTexture(BaseContext.java:377)
    at com.sun.prism.impl.ps.BaseShaderGraphics.fillEllipse(BaseShaderGraphics.java:1524)
    at com.sun.prism.impl.shape.BasicEllipseRep.fill(BasicEllipseRep.java:41)
    at com.sun.javafx.sg.prism.NGShape.renderContent2D(NGShape.java:244)
    at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:225)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:469)
    at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:324)
    at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:89)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
    at java.lang.Thre
ad.run(Thread.java:744)
glGetError 0x505
java.lang.NullPointerException
    at com.sun.prism.impl.BaseContext.getOvalTexture(BaseContext.java:377)
    at com.sun.prism.impl.ps.BaseShaderGraphics.fillEllipse(BaseShaderGraphics.java:1524)
    at com.sun.prism.impl.shape.BasicEllipseRep.fill(BasicEllipseRep.java:41)
    at com.sun.javafx.sg.prism.NGShape.renderContent2D(NGShape.java:244)
    at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:225)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:469)
    at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:317)
    at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:89)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
    at java.lang.Thread.run(Thread.java:744)
glGetError 0x505
java.lang.NullPointerException
    at com.sun.prism.impl.BaseContext.getOvalTexture(BaseContext.java:377)
    at com.sun.prism.impl.ps.BaseShaderGraphics.fillEllipse(BaseShaderGraphics.java:1524)
    at com.sun.prism.impl.shape.BasicEllipseRep.fill(BasicEllipseRep.java:41)
    at com.sun.javafx.sg.prism.NGShape.renderContent2D(NGShape.java:244)
    at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:225)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:469)
    at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:317)
    at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:89)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
    at java.lang.Thread.run(Thread.java:744)
glGetError 0x505
java.lang.NullPointerException
    at com.sun.prism.impl.BaseContext.getOvalTexture(BaseContext.java:377)
    at com.sun.prism.impl.ps.BaseShaderGraphics.fillEllipse(BaseShaderGraphics.java:1524)
    at com.sun.prism.impl.shape.BasicEllipseRep.fill(BasicEllipseRep.java:41)
    at com.sun.javafx.sg.prism.NGShape.renderContent2D(NGShape.java:244)
    at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:225)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:469)
    at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:317)
    at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:89)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
    at java.lang.Thread.run(Thread.java:744)
glGetError 0x505
java.lang.NullPointerException
    at com.sun.prism.impl.BaseContext.getOvalTexture(BaseContext.java:377)
    at com.sun.prism.impl.ps.BaseShaderGraphics.fillEllipse(BaseShaderGraphics.java:1524)
    at com.sun.prism.impl.shape.BasicEllipseRep.fill(BasicEllipseRep.java:41)
    at com.sun.javafx.sg.prism.NGShape.renderContent2D(NGShape.java:244)
    at com.sun.javafx.sg.prism.NGShape.renderContent(NGShape.java:225)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:225)
    at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
    at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2043)
    at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1951)
    at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:469)
    at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:317)
    at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:89)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
    at java.lang.Thread.run(Thread.java:744)
 
Upvote 0

le_toubib

Active Member
Licensed User
Longtime User
how to use the new datepicker control (e.g : assign top,left, width properties?) and how is it different from the old method of assigning the designer control to a node ?
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
@ta1dr the minimum version of Java required for UI apps created with B4J 4.00 is 8.40 (that use the internal designer).
The problem is that Oracle removed support for UI apps on the ARM Java in newer versions of Java.
Going forward, UI apps are not supported on ARM boards.

how to use the new datepicker control (e.g : assign top,left, width properties?) and how is it different from the old method of assigning the designer control to a node ?
You should add the DatePicker with the internal designer.
 
Upvote 0
Top