[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: Layout bug with SwingNode ?
From:       Kevin Rushforth <kevin.rushforth () oracle ! com>
Date:       2018-02-23 13:42:50
Message-ID: 5A901A5A.9090603 () oracle ! com
[Download RAW message or body]

This does sound like a bug. Can you file it at http://bugreport.java.com/ ?

One possible workaround might be to set the size of the scene when you 
first create it:

    new Scene(root, WIDTH, HEIGHT)

-- Kevin


Adam Granger wrote:
> Greeting, 
>
> (https://stackoverflow.com/questions/48937412/node-snapshot-causing-layout-issue)
>
> Using JavaFX 9.0.4 I'm embedding some 3rd party Swing content in a
> JavaFX app. The 3rd party content already has its own preferred size,
> so I'm wrapping it with a StackPane to stretch it out... 
>
> 	However, when node.snapshot() is called this causes the SwingNode to
> jump back to its preferred size, manually resizing the window causes
> it to fill the window again. 
>
> 	I've also identified this only occurs if the scene is first shown
> without content and the content is added later. 
>
> 	Is this a bug? How can I work around it? 
>
> 	The following example recreates the issue 
>
> 	public
>
> class
>
> NodeSnapshotFunny
>
> extends
>
> Application
>
> {
>
> @Override
>
> public
>
> void
>  start
> (
> Stage
>  stage
> )
>
> throws
>
> Exception
>
> {
>
> SwingNode
>  swingNode 
> =
>
> new
>
> SwingNode
> ();
>
> Button
>  button 
> =
>
> new
>
> Button
> (
> "Test"
> );
>
>  button
> .
> setOnAction
> (
> event 
> ->
>
> {
>
> WritableImage
>  image 
> =
>  button
> .
> snapshot
> (
> null
> ,
>
> null
> );
>
> });
>
> StackPane
>  stackPane 
> =
>
> new
>
> StackPane
> (
> swingNode
> );
>
> Scene
>  scene 
> =
>
> new
>
> Scene
> (
> stackPane
> );
>
>  stage
> .
> setScene
> (
> scene
> );
>
>  stage
> .
> show
> ();
>
>  stackPane
> .
> getChildren
> ().
> add
> (
> button
> );
>
> SwingUtilities
> .
> invokeLater
> (()
>
> ->
>
> {
>
> JPanel
>  jPanel 
> =
>
> new
>
> JPanel
> ();
>
>  jPanel
> .
> setPreferredSize
> (
> new
>
> Dimension
> (
> 300
> ,
>
> 300
> ));
>
>  jPanel
> .
> setBackground
> (
> Color
> .
> red
> );
>
>  swingNode
> .
> setContent
> (
> jPanel
> );
>
> });
>
> }
>
> public
>
> static
>
> void
>  main
> (
> String
> []
>  args
> )
>
> {
>
>  launch
> (
> args
> );
>
> }
>
> }
>
>
>   
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic