哪个是此设计的更好的顶级容器,JFrame与Jpanels,或JDesktop与JInternalFrames

我是Swing和AWT的初学者,我正在寻找使用Netbeans构建GUI。 我的GUI需要三个区域,我目前正在考虑将其作为JFrame上的JPanels。 我需要一个“绘图”面板,它将监听鼠标输入并绘制Java2D形状。 绘图面板将固定在左上角。 另外两个区域是“属性”滚动窗格和“控制器”滚动窗格。 控制器窗格将确定将通过按钮显示哪些绘制元素,属性滚动窗格将显示有关在绘图窗格中单击的任何形状对象的详细信息(端点,颜色等)。

绘图区域的典型用例是绘图区域中的第一次点击将是形状的第一组坐标,IE:一条线。 该点击将被捕获为point2d对象。 第二次单击将是第二个point2D对象,并且将在两者之间构建一条线。 控制器区域将具有“圆圈”,“线”,“椭圆”等按钮。根据单击的控制器按钮,将仅在绘图区域中绘制该类型的形状。 控制器和属性滚动窗格将不可移动,它们将分别锁定并可调整到GUI的底部和右侧。

作为初学者,我正在努力使用最好的组件。 我一直在阅读JDesktop和JInternalFrame,但似乎我并不真的需要这一切。 一个简单的JFrame有三个JPanel就足够了吧? 更具体地说,我认为我需要一个顶级JFrame,一个JPanel用于绘图框架和两个JScrollPanels。 我需要在绘图窗格中使用鼠标监听器来捕获每次单击的坐标,以及控制窗格中每个按钮的监听器。 我可以在JPanel上放置一个鼠标监听器,并为其绘制Java2D形状,还是需要在JPanel内部使用不同的(更好的?)容器来绘制它?

GraphPanel可能会为您提供构建此类应用程序的一些想法。

GraphPanel截图

JInternalFrames通常有标题栏,外带盒等。 这里的示例似乎不适合您的模型。 (除非你希望用户能够将面板移动到他们想要的任何地方,或者让它们消失?)所以我建议使用JPanels更简单的JFrame。

考虑两个JSplitPane来分离绘图区域,控制区域和属性区域。 JSplitPane允许用户通过单击并使用鼠标拖动分割线来调整区域的大小。

在此处输入图像描述

(将JFrame用于顶级组件。)

作为初学者,如果您不需要resize和滚动,那么如果您创建的应用程序不会resize或滚动,您将会更容易。