【发布时间】:2011-07-19 17:36:14
【问题描述】:
我正在为一个在线课程做一个项目,我今年夏天犯了一个错误,我需要构建一个 gui 来展示哈夫曼代码算法的工作原理。算法部分很简单,不是很复杂。但是我不确定在每个步骤中绘制树(福雷斯特)的最佳方法是什么。它必须从屏幕上的 n 个节点(其中包含字符)开始,然后您将按下“下一步”按钮,它将选择两个加权最低的节点(基于字符频率)字符并使它们成为一个新节点(只有一个权重 - 没有字符),然后更新屏幕/面板。
我以前做过swing gui,我的技能没什么特别的,但我知道我的方法。但是我坚持这个实现。我现在写了几百行代码,但它不起作用,而且我认为它仍然很糟糕,所以我想“重新开始”并更好地计划它。所以我想对数据结构提出一些建议,以跟踪节点以及如何在屏幕上绘制它们。
我使用 JPanel 的 ArrayList 作为节点并尝试将它们绘制到空布局。我确定这很糟糕,我想知道更好的方法。可能是 GridBagLayout?
注意:不要说 JTree。
【问题讨论】:
-
您的第一个错误是使用空布局。
-
1) 是否只有一个库
JPanels,或者不止一个 2)JPanels是相同的width & height3) 你把你的JPanels放到了JScrollPane跨度> -
@mKorbel 它是 BST,我不知道还能告诉你什么。可能有 1 个节点或 1000 个节点(不是真的很可能会限制它)。
-
@Paul Sasik Jtree 会起作用,但我只会在需要交出它并且我没有其他工作的情况下才会这样做。
-
@Bill:你还是没有说你为什么不想使用它。你能证明这个决定是正确的吗?
标签: java swing graphics binary-tree