Java API中是否有一个允许我这样做的LayoutManager?

时间:2012-01-12 19:39:28

标签: java user-interface


我正在为这个游戏编程这个关卡创建者,我的一些朋友正在做,但是现在GUI正在使用null布局,我不想这样做。它现在工作正常,但我仍然反对它,我知道其他人也鼓励你总是使用LayoutManager。我现在不是真的愿意妥协设计,所以我非常想知道是否有一个LayoutManager允许我创建一个如下所示的GUI:
enter image description here

它必须是标准的JAVA API! :)

4 个答案:

答案 0 :(得分:2)

简短回答,是的:GridBagLayout。但这对于解决和调试来说是一件痛苦的事。

答案很长:在我看来,您可以使用BorderLayoutJPanel JButtons以及JTable来定制TableCellRenderers。 }和TableCellEditors

答案 1 :(得分:2)

对于BorderLayout来说,这看起来不错。将按钮放在嵌套容器中作为NORTH元素。添加JScrollPane作为CENTER组件。网格本身看起来像是GridBagLayout或GridLayout的良好候选者。

答案 2 :(得分:0)

查看Sun自己为Java提供的优秀文档:

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

您能发现GridLayoutGridBagLayout吗?如果你将它放入一个可滚动的容器中,那应该可以解决问题。

答案 3 :(得分:0)

将GroupLayout用于整个面板,并为地图使用自定义绘画方法。

我不认为这里的很多人会推荐GroupLayout,因为它比其他布局管理器更复杂。我喜欢它,因为它产生了很好的可扩展结果,因此我花时间去理解它。现在,我几乎没有使用任何其他东西 - 特别是对于带有按钮和文本字段的用户交互面板。

但是,对于地图,我会创建自定义MapPanel并覆盖paintComponent()。当然你必须编写自己的自定义滚动算法,但我认为这不需要处理滚动条是一个很小的好处。你可以做到这一点,所以有人可以只是拖动鼠标移动地图。使用鼠标滚轮进行缩放,使界面非常直观。如果你想绘制滚动条,你也可以这样做。

我使用这样的模型构建了几个接口。我使用这个模型构建了几个游戏地图,以及金融市场图表包。这使得添加自定义功能变得非常容易,可以做一些在JTable中尝试做的噩梦。