我正在试图弄清楚如何管理这个布局以使其工作。我有一些想法,但重新调整整个事情是相当多的工作要做。
这就是它的样子(在JTextAreas:“组件名称(父(父))”):
如果你觉得有必要知道的话,我已经解释了问题末尾的结构。 这个GUI应该是非常动态的。您应该能够添加和删除章节,页面,问题和答案。
上图中的GUI是使用嵌套的JPanels(最厚的部分最多六层!)制作的,其中大多数没有指定尺寸,因此可以根据文档中的更改进行调整。但是,在绘制文档时会消耗大量时间(大约每页一秒),因为程序会重新计算所有JPanel的大小,直到它们适合为止。因此,除非我可以指定组件的初始大小(MigLayout),否则此方法不会为我删除它。
只有我提出的替代方法是尝试使用MigLayout将它全部放在一个层中,这是可行的,但我不知道它对整个事物的动态部分有多好。删除和读取所有组件(文档可能有超过一百页!)似乎并不是一个选项。由于大多数组件都嵌套在另一个组件上并且要作为一个组件移动,因此这种解决方案更加困难。
此外,所有宽度都是固定的,而页面中的所有高度都是灵活的。
我真的不知道怎么回事。我是否应该修改现有的一个想法,或者是否有可能在这种情况下使用的库?还有另一种方式吗?
有什么想法吗?
另外,正如所承诺的,这是解释的结构:
所以,这里重要的是选项卡内的JPanel。它包含文档。 文档本身由随机数量的章节组成。每个章节包含随机数的PAGES。 PAGES有MARINGS和CONTENT。在图像上,粉红色和红色部分是MARGNIS,而其中的所有内容都是CONTENT(绿色)。内容包含一个TITLE(蓝色)。 TITLE由单个JTextArea组成。在TITLE之后,CONTENT可以包含随机数的QUESTION(橙色)。 QUESTION在一行中包含一个JLabel(数字)和JTextArea,下面是它的答案面板。答案面板最多包含五个答案(黄色)。每个ANSWER都有一个JCheckBox,JLabel(字母)和一个JTextArea都在同一行。
我在这里注明了一些事情:
答案 0 :(得分:2)
您似乎拥有所需的设计。细分每个部分并应用所需的布局来实现该部分。每个部分都应该是一个独立的组件。
所以在我看来,首先要对数据进行建模。您需要一个文档模型,其中包含一个章节列表,其中包含一个页面列表,该列表由标题列表组成,标题列表由一系列问题组成。
然后我会为模型的每个级别提供一个视图。这将使您能够专注于每个视图的个性化需求,孤立并重用代码逻辑。这也意味着如果您需要进行更改,它们将更容易制作并反映在整个程序中
您似乎对文档/章节有正确的想法,在标签中列出。
我会坚持到底。每个页面都是一个自包含的组件,可能使用类似GridLayout的东西。
每个内容部分都是它自己的组件,由标题编辑器和问题组成。
这里我使用BorderLyout,将标题编辑器置于北方位置,将问题面板置于中心位置。然后,您可以在问题窗格中使用类似GridLayout的内容。
至于边距,您可以通过使用EmptyBorders
来实现这一点