如何嵌入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。