2008-10-15 57 views
1

我将如何使用标准Java 2D编写自己的滚动条。滚动条的原始Java 2D实现

我真的不希望使用摆动,和我已经弥补了一切我自己的组成部分,如按钮等

我真的不想找的代码,而数学参与在事件发生变化和绘图时。

回答

2

为什么要编写自己的java GUI工具包?你已经有了Swing和SWT的选择,你真的可以比这两支球队做得更好吗?

如果您已经编写了该工具包的其余部分,我不明白为什么滚动条会让您失望。如果不了解您的事件系统,或者您的自定义组件结构如何,就不可能提供多少建议。我不认为这是数学密集型的 - 只是保持可滚动组件的高度和视图的大小,并且滚动条的大小应该与可见组件的比例相匹配。滚动条的位置应该匹配组件的哪一部分是可见的(这将不得不缩放)。具体来说,你想知道什么?

+0

Swing是臃肿和使用矢量内部。在优化代码方面肯定不是最好的。 意见:SWT的编程模型比Swing更差。两者都有很多不足之处。 – MetroidFan2002 2008-10-16 14:24:12

2

Java现已开放。我会去看看Swing和/或SWT的源代码,因为它们已经被实现。数学看起来相当简单。你有一个酒吧和一个容器。为了简化,我们只讨论长度(滚动条移动的维度)。容器有一定的长度。酒吧的长度等于或小于容器的长度。定义滚动条的中心和两个端点是很有用的。您可以使滚动条从顶部0开始,底部1开始,顶部0开始,底部100开始,重要部分以相同的方式定义您的滚动条。然后,您可以检查端点是否与边缘发生碰撞,以阻止条移动。如果用鼠标将光标放在条内的坐标上,则条开始关注光标的位置,并将绘制滚动条和滚动条最终应该影响的内容。所以,你会让页面受到影响,并将其映射到0和1 *滚动条像素的缩放比例。然后你会担心任何一端的箭头以及每次点击跳跃有多大,并处理mousedown事件等等。使用所给予的东西不要重新发明轮子。