Java3D 与 Canvas3D 和按钮重叠

标签 java layout java-3d canvas3d

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

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

enter image description here

我不想要的是:

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

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

enter image description here

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

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

问题:如何使 Canvas3D 拉伸(stretch)到窗口,同时按钮正好位于我想要的位置(x,y)并且具有我想要的尺寸(h,w)而不被 Canvas3D 重叠。我尝试了 Canvas3D 和按钮的不同布局 ->失败。仅显示一种布局。

感谢您的宝贵时间。

Java3D 1.5.2 和 Eclipse 。 Windows XP 和英特尔迅驰

最佳答案

与其说这是一个 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);

关于Java3D 与 Canvas3D 和按钮重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314324/

相关文章:

java - 为什么不能将整数转换为字符串?

layout - 新的 stackoverflow 网站设计(隐藏左侧面板)

Java 小程序 : jocl operations stop java3d

Java:三种可能类型的一个字段?

java - 如何使用 printf 分隔多个小数并将所有这些数字四舍五入到小数点后两位

Java 构造函数样式 : check parameters aren't null

onConfigurationChanged 的​​ Android 旋转问题

c++ - 是否可以继承QVBoxLayout并在QWidget中设置为layout?

java - 如何在NetBeans平台应用程序中更快地显示Java3D图像?

java - 加载对象文件时不会加载 Material 文件