cornercorner
FeaturesPluginsDocs & SupportCommunityPartners

EmbeddedBrowserPrototypingJWebPane

Prototyping JWebPane integration (May/2009 - June/2009)

JCGJavaFXWebkit

- uses Swing's default look and feel to render some HTML widgets (buttons, combo boxes etc) - this means the rendering looks different on different OS/LaF combinations and definitely does not render nice as native browsers

- noticeably slower rendering and page scrolling in comparison to a native browser solution

- experienced JVM crashes when playing with the prototype

- problems with keyboard input (e.g. ENTER in a search field did not work, TAB does not move keyboard focus between input fields)

- cookies are not persisted (e.g. login to netbeans.org websites does not work)

- no API for cookies management

- JavaScript support not working 100% (e.g. download page on netbeans.org does not detect and set your OS as the default target platform for the download)

- doesn't work well with some browser plugins, e.g. Flash (as of June 30th)

- doesn't allow manipulations with HTML document (no access to DOM tree) (as of June 30th)

- doesn't work on Windows Vista 64bit

- native binaries must be placed in netbeans/bin folder when running under Windows XP and in JDK's bin folder when running under Linux

- not possible to locate selected element in DOM tree (required to implement pop-up menu)

- no SVG support

- OutOfMemoryError when setting fontsize:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:59)
	at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:397)
	at sun.awt.image.ByteInterleavedRaster.<init>(ByteInterleavedRaster.java:72)
	at sun.awt.image.ByteInterleavedRaster.createCompatibleWritableRaster(ByteInterleavedRaster.java:1310)
	at java.awt.image.AffineTransformOp.createCompatibleDestImage(AffineTransformOp.java:448)
	at java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:209)
	at org.webkit.webcore.platform.graphics.WCGraphics2DContext.drawPattern(WCGraphics2DContext.java:357)
	at org.webkit.webcore.platform.WCWidget.twkUpdateContents(Native Method)
	at org.webkit.webcore.platform.WidgetDelegate$2.run(WidgetDelegate.java:94)
	at org.webkit.webcore.platform.SimplifiedWebKitFlow.invokeAndWait(SimplifiedWebKitFlow.java:25)
	at org.webkit.webcore.platform.WidgetDelegate.paintComponent(WidgetDelegate.java:90)
	at javax.swing.JComponent.paint(JComponent.java:1027)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JViewport.paint(JViewport.java:747)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1030)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)
	at javax.swing.JComponent.paint(JComponent.java:1036)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:564)
	at javax.swing.JComponent.paintChildren(JComponent.java:864)