1

我一直在使用 Java3D 对固态物理学进行一些介绍。在钻研了很多 3D 里面的东西之后,决定放一些按钮来测试不同的东西。我的问题出现在这里。

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

在此处输入图像描述

我不想要的是:

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

然后我尝试使用setLayout(new BorderLayout());andadd("Center",component);用于 Canvas3D,而“South”、“West”、“East”用于按钮。下图为案例:

在此处输入图像描述

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

  • 按钮不是我想要的大小(延伸到窗口)并且不在我想要的偏移位置。
  • 当我将两个按钮放在“南”这样的同一区域时,按钮也会相互重叠。

问题:如何让 Canvas3D 拉伸到窗口,而按钮正好在我想要的位置 (x,y) 并且具有我想要的大小 (h,w) 而不会被 Canvas3D 重叠。我为 Canvas3D 和 Buttons 尝试了不同的布局——>失败。仅显示一种布局。

感谢您的时间。

Java3D 1.5.2 和 Eclipse 。Windows XP 和英特尔 centrino

4

1 回答 1

1

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

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

例如,您可以尝试边框布局,在按钮的北侧或西侧使用嵌套的 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);
于 2013-03-18T16:38:22.010 回答