2012-09-29 52 views
0

这更像是一个合乎逻辑的问题/解析。类似页面管理的MS Word

我有一个类似于MS Wrod的文本编辑程序。它的文档是由页面组成的。

一个页面是保存页面内容的JPanel(A)。添加JPanel(A)页面内容,这是其他JPanel(B)。页面的最后一个元素始终是填充所有未占用空间的填充程序。

我所要做的就是管理JPanel(B)迁移。当页面被填充时,最后一个应该移动到下一个页面上,当页面上的空间被释放时,我必须检查下一个页面的第一个元素是否适合该空间并将其向上移动。

我尝试使用连接到Filler的组件侦听器来实现该功能。 如果填充物高度达到零,则页面已满,如果填充物放大,则会从页面中删除(或降低其高度)元素。

看起来相当简单,但也有一些问题。 JPanels(B)不是全部相同的大小。

这意味着,当一个JPanel(B)从页面中删除时,多于一个JPanel(B)从 下一页可能适合该空间。这也意味着如果页面的第一个JPanel(B)的高度降低了,它也可能适合上一页(如果它的新高度小于预设页面的填充页上的高度),并且如果下降足够大,可以在当前附加更多来自下一页的JPanel(B)。

考虑到所有这些因素,可以基于此编写相当数量的代码。但是这一切都非常笨拙,因为它都是在一个组件监听器中完成的。

移动JPanels(B)将触发前一页/下一页的组件监听器。我可以通过在侦听器代码正在执行时将布尔值设置为true来避免这种情况,并且只有在布尔值为false时才会运行侦听器,但是它根本不会调用其他页面侦听器,这又不好,它们必须是最后调用。

我还想在这里添加一个子问题:如果我从另一个侦听器调用侦听器,它会运行immediatley还是侦听器完成后?如果答案是在后面,如果我多次调用它,它会只运行一次还是多次?如果一个侦听器是从自己调用的呢?

我的主要问题是,有没有一种方法可以在Java中以更简单的方式实现这种类似Word的页面内容管理?以某种方式创建一组组件,它们以自动管理所有这些的方式进行排列(在JTextArea中对文字进行自动换行的东西)?

我只是一个Java和Swing的初学者,所以也许有一些组件可以用于这个,或者可能当几个正确组合在一起就像这样? 也许有些布局管理?

如果我创建了一些高级JPanel,我可以根据页码增加/减少它的高度,也许我可以添加一些垂直条作为分隔符,如果在它之前添加了一个组件,如果它的高度是更大的空间留给分隔符,它会自动放在它后面?这样我就可以创建页面的幻觉。

这些只是一些想法,我希望他们中的一些是可能的,或者有人有更好的解决办法...

+1

http://java-sl.com/articles.html这里阅读关于分页的4篇文章 – StanislavL

+0

@StanislavL你先生,已经成就了我的一天。再次写这个答案,以便我可以接受它... – Karlovsky120

回答

5

这就是答案 java-sl.com/articles。html在这里阅读4条关于分页的文章

+0

java-sl.com/articles.html不再工作 –

+0

@sanjayduttindia我刚刚检查过。它被打开了。 – StanislavL