Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
滚动条的原始Java2D实现_Java_Scrollbar_Java 2d - Fatal编程技术网

滚动条的原始Java2D实现

滚动条的原始Java2D实现,java,scrollbar,java-2d,Java,Scrollbar,Java 2d,如何使用标准Java2D编写自己的滚动条 我真的不想使用swing,而且我已经为其他所有组件(如按钮等)制作了自己的组件 我不是在寻找代码,而是在寻找事件更改和绘图所涉及的数学。你到底为什么要编写自己的java GUI工具包?你已经有了挥杆和SWT的选择,你真的能比这两支球队做得更好吗 如果您已经编写了工具包的其余部分,我不明白为什么滚动条会难倒您。如果不了解事件系统或自定义组件的结构,就不可能给出很多建议。我不认为这是特别数学密集型的-只要保持可滚动组件的高度和它所在的视图,滚动条的大小应该与

如何使用标准Java2D编写自己的滚动条

我真的不想使用swing,而且我已经为其他所有组件(如按钮等)制作了自己的组件


我不是在寻找代码,而是在寻找事件更改和绘图所涉及的数学。

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


如果您已经编写了工具包的其余部分,我不明白为什么滚动条会难倒您。如果不了解事件系统或自定义组件的结构,就不可能给出很多建议。我不认为这是特别数学密集型的-只要保持可滚动组件的高度和它所在的视图,滚动条的大小应该与可见组件的比例相匹配。滚动条的位置应与组件的可见部分相匹配(必须缩放)。具体来说,您想知道什么?

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


如果您已经编写了工具包的其余部分,我不明白为什么滚动条会难倒您。如果不了解事件系统或自定义组件的结构,就不可能给出很多建议。我不认为这是特别数学密集型的-只要保持可滚动组件的高度和它所在的视图,滚动条的大小应该与可见组件的比例相匹配。滚动条的位置应与组件的可见部分相匹配(必须缩放)。具体来说,您想知道什么?

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

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

虽然不是Java2D,但这个简单的代码片段可能会有帮助:


虽然不是Java2D,但这个简单的代码片段可能会有所帮助:


Swing膨胀,在内部使用矢量。就优化代码而言,它肯定不是最好的。观点:SWT的编程模型比Swing更糟糕。这两者都有很多需要改进的地方。也许,但现代swing应用程序的最终用户体验可以说和其他任何东西一样好,这就没有理由自己编写一个完整的GUI框架。你不太可能做得更好。这取决于它如何/在何处使用向量,以及这是否糟糕。Swing过于臃肿,在内部使用向量。就优化代码而言,它肯定不是最好的。观点:SWT的编程模型比Swing更糟糕。这两者都有很多需要改进的地方。也许,但现代swing应用程序的最终用户体验可以说和其他任何东西一样好,这就没有理由自己编写一个完整的GUI框架。你不太可能做得更好。这取决于它如何/在何处使用向量来判断这是否是坏的。