Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何嵌入java3d';javafx布局中的Canvas3d?_Java_Swing_Javafx_Java 3d - Fatal编程技术网

如何嵌入java3d';javafx布局中的Canvas3d?

如何嵌入java3d';javafx布局中的Canvas3d?,java,swing,javafx,java-3d,Java,Swing,Javafx,Java 3d,我尝试使用SwingNode在StackPane中嵌入Canvas3d。 我将Canvas3d放入JPanel,并将JPanel放入SwingNode。但是只出现了空的Jpanel。 我在某处听说,SwingNode只渲染纯Swing。因此,我使用了JCanvas3d而不是Canvas3d,但它也不起作用! 是否有任何方法可以在javafx布局中嵌入Java3d的Canvas3d?不使用SwingNode也没关系 我的java版本是JDK1.8_xx,这是我的源代码 public class M

我尝试使用
SwingNode
StackPane
中嵌入
Canvas3d
。 我将
Canvas3d
放入
JPanel
,并将
JPanel
放入
SwingNode
。但是只出现了空的
Jpanel
。 我在某处听说,
SwingNode
只渲染纯Swing。因此,我使用了
JCanvas3d
而不是
Canvas3d
,但它也不起作用! 是否有任何方法可以在javafx布局中嵌入Java3d的
Canvas3d
?不使用SwingNode也没关系

我的java版本是JDK1.8_xx,这是我的源代码

public class Main extends Application
{
public static void main( String[] args )
{
    launch( args );
}

@Override
public void start( Stage primaryStage )
{

    try
    {

        StackPane root = new StackPane();
        SwingNode swingNode = new SwingNode();

        root.setPrefSize( 400, 400 );
        root.setMinSize( 400, 400 );

        Scene scene = new Scene( root, 400, 400 );
        primaryStage.setScene( scene );
        primaryStage.show();
        root.setPrefSize( 400, 400 );

        root.getChildren().add( swingNode );

        SwingUtilities.invokeLater( new Runnable()
        {
            @Override
            public void run()
            {

                GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
                Canvas3D canvas = new Canvas3D( config );

                SimpleUniverse univ = new SimpleUniverse( canvas );
                univ.getViewingPlatform().setNominalViewingTransform();
                BranchGroup scene = createSceneGraph();
                scene.compile();
                univ.addBranchGraph( scene );

                JPanel panel = new JPanel();
                panel.add( canvas );

                swingNode.setContent( panel );

            }
        } );

    }
    catch ( Exception e )
    {
        e.printStackTrace();
    }
}

public BranchGroup createSceneGraph()
{
    BranchGroup branch = new BranchGroup();

    // Make a changeable 3D transform
    TransformGroup trans = new TransformGroup();
    trans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE );
    branch.addChild( trans );

    // Make a shape
    ColorCube demo = new ColorCube( 0.4 );
    trans.addChild( demo );

    // Make a behavor to spin the shape
    Alpha spinAlpha = new Alpha( -1, 4000 );
    RotationInterpolator spinner = new RotationInterpolator( spinAlpha, trans );
    spinner.setSchedulingBounds( new BoundingSphere( new Point3d(), 1000.0 ) );
    trans.addChild( spinner );

    return branch;
}
}

,为什么要尝试嵌入Java3D?@jewelsea,因为我想把用Java3D制作的项目放到javaFX项目中。
JPanel panel=new JPanel()
将默认为
FlowLayout
,请改为尝试
。。新JPanel(新网格布局)
将使用添加到面板中的任何组件填充可用空间。@AndrewThompson不工作。我认为这与杰帕内尔的布局无关“我认为这与杰帕内尔的布局无关”,人们的想法无法解释。为了更快地获得更好的帮助,请发布一个or。