1

我正在尝试弄清楚如何管理此布局以使其正常工作。我有一些想法,但要重新改造整个事情是相当多的工作要做。

这是它的样子(在 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。

这里我标出了一些东西:

在此处输入图像描述

4

1 回答 1

2

你似乎有你需要的设计。分解每个部分并应用所需的布局来实现该部分。每个部分都应该是一个独立的组件。

所以在我看来,首先要对数据进行建模。您需要一个 Document 模型,其中包含一个章节列表,其中包含一个页面列表,该列表由一个标题列表组成,该列表由一个问题列表组成。

然后,我将为模型的每个级别提供一个视图。这将允许您专注于每个视图的个性化需求,隔离并重用代码逻辑。这也意味着如果您需要进行更改,它们将更容易进行并反映在整个程序中

您似乎对文档/章节有正确的想法,在选项卡中布置。

我会跟进的。每个页面都是一个独立的组件,可能使用类似 GridLayout 的东西。

每个内容部分都是它自己的组件,由标题编辑器和问题组成。

在这里,我将使用 BorderLyout,将标题编辑器放在北方位置,将问题面板放在中心。然后,您可以在问题窗格中使用类似 GridLayout 的东西。

至于边距,可以通过使用 EmptyBorders 来实现

于 2013-07-07T23:04:03.580 回答