我正在尝试弄清楚如何管理此布局以使其正常工作。我有一些想法,但要重新改造整个事情是相当多的工作要做。
这是它的样子(在 JTextAreas 中:“组件名称(父(父))”):
如果您觉得有必要知道,我已经在问题末尾解释了结构。这个 GUI 应该是非常动态的。您应该能够添加和删除章节、页面、问题和答案。
上图中的 GUI 是使用嵌套的 JPanel(在最厚的部分上最多六层!),其中大多数没有指定它们的大小,因此它们可以根据文档中的更改进行调整。但是,在绘制文档时会消耗大量时间(每页大约一秒),因为程序会不断重新计算所有 JPanel 的大小,直到它们适合为止。因此,除非我可以指定组件的初始大小(MigLayout),否则此方法不会为我削减它。
我想出的唯一替代方法是尝试使用 MigLayout 将其全部放在一层中,这是可行的,但我不知道它与整个事物的动态部分的工作情况如何。删除和读取所有组件(文档可能有一百多页!)似乎并不是一种选择。由于大多数组件是相互嵌套的,并且要作为一个整体移动,这使得该解决方案更加困难。
此外,所有宽度都是固定的,而页面内的所有高度都是灵活的。
我真的不知道该怎么做。我应该修改一个现有的想法来工作,还是可能有在这种情况下使用的库?还有其他方法吗?
有任何想法吗?
此外,正如所承诺的,这是解释的结构:
所以,这里重要的是选项卡内的 JPanel。它包含文档。文档本身由随机数量的 CHAPTERS 组成。每个 CHAPTER 包含随机数量的 PAGES。PAGES 有MARINGS 和CONTENT。在图像上,粉红色和红色部分是 MARGNIS,而里面的一切都是 CONTENT(绿色)。CONTENT 包含一个 TITLE(蓝色)。TITLE 由单个 JTextArea 组成。在 TITLE 之后,CONTENT 可以包含随机数的 QUESTION(橙色)。QUESTION 在一行中包含一个 JLabel(number) 和 JTextArea,下面是它的 ANSWER PANEL。ANSWER PANEL 最多包含五个 ANSWERS(黄色)。每个 ANSWER 在同一行中都有一个 JCheckBox、JLabel(字母)和一个 JTextArea。
这里我标出了一些东西: