Java3D与Canvas3D和按钮重叠

时间:2012-09-07 08:19:33

标签: java layout java-3d canvas3d

我一直在使用Java3D对solidstate物理做一些介绍。在钻研了很多3D内容之后,决定用一些按钮来测试不同的东西。我的问题出现在这里。

在下面的图片中,我使用setLayout(null)来放置按钮和Canvas3D:

enter image description here

我不想要的是:

  • Canvas3D重叠按钮。
  • Canvas3D不会拉伸以保持相同的图片大小/窗口大小比例,因此当我调整窗口大小时,它只是大小相同。

然后我尝试将setLayout(new BorderLayout());add("Center",component);用于Canvas3D,而使用“South”,“West”,“East”作为按钮。下图显示了这种情况:

enter image description here

这看起来更好,但这次又出现了另一个问题:

  • 按钮不是我想要的尺寸(伸展到窗口),而不是我想要的偏移位置。
  • 当我把两个放在同一个区域时,按钮也会相互重叠,如“南方”。

问题:如何让Canvas3D拉伸到窗口,而按钮就位,我想要(x,y)并且具有我想要的尺寸(h,w)而不会被Canvas3D重叠。我为Canvas3D和Buttons尝试了不同的布局 - >失败了。只显示一个布局。

感谢您的时间。

Java3D 1.5.2和Eclipse。 Windows XP和intel centrino

1 个答案:

答案 0 :(得分:1)

这不是一个真正的Java3D问题,而是一个Swing Layout问题。

正确的解决方案可能是某种嵌套布局,具体取决于您希望它的外观。

例如,您可以尝试边框布局,在按钮的北侧或西侧使用嵌套的FlowLayout,这可能更接近您要查找的内容。尝试下面的内容,并根据您的需求进行定制。

JPanel rootPanel = new JPanel(new BorderLayout());
JPanel controlPanel = new JPanel(new FlowLayout());
controlPanel.add(new JButton("Alpha"));
controlPanel.add(new JButton("Beta"));
controlPanel.add(new JButton("Gamma"));
rootPanel.add(controlPanel, BorderLayout.NORTH);
rootPanel.add(myCanvas3D, BorderLayout.CENTER);