Необработанная Java 2D реализация полосы прокрутки - PullRequest
1 голос
/ 16 октября 2008

Как мне написать собственную полосу прокрутки, используя стандартную Java 2D.

Я действительно не хочу использовать свинг, и я уже приготовил свои собственные компоненты для всего остального, такого как кнопки и т. Д.

Я на самом деле не ищу код, скорее математика, связанная с изменениями события и рисованием.

Ответы [ 3 ]

2 голосов
/ 16 октября 2008

Java теперь открыта. Я бы посмотрел на источник для Swing и / или SWT, так как они уже реализованы. Математика кажется довольно простой. У вас есть бар и контейнер. Для упрощения мы обсудим только длину (размер, в котором перемещается полоса прокрутки). Контейнер имеет определенную длину. Бар имеет длину, которая равна или меньше, чем контейнер. Полезно определить центр и две конечные точки полосы прокрутки. Полоса прокрутки может начинаться с 0 сверху и с 1 снизу или с 0 сверху и с 100 снизу, при этом важная часть определяет вашу полосу прокрутки таким же образом. Затем вы можете проверить конечные точки на предмет столкновения с краем, чтобы остановить движение планки. Если мышь удерживать нажатой, когда курсор находится над координатами внутри панели, панель начнет заботиться о том, где находится курсор, и закрасит полосу прокрутки и все, что, в конечном счете, полоса прокрутки должна повлиять. Таким образом, вы бы взяли на страницу, которая будет затронута, и отобразили ее на 0 и 1 * масштаб в пикселях полосы прокрутки. Затем вы начинаете беспокоиться о стрелках на обоих концах и о том, насколько велик прыжок на каждом клике, а также о событиях mousedown и т. Д. Используйте то, что дано, не изобретайте колесо.

2 голосов
/ 16 октября 2008

С какой стати вы хотите написать свой собственный инструментарий java GUI? У вас уже есть выбор Swing и SWT, можете ли вы добиться большего успеха, чем эти две команды?

Если вы уже написали остальную часть инструментария, я не понимаю, почему полоса прокрутки вас озадачила. Не зная ничего о вашей системе событий или о том, как устроены ваши пользовательские компоненты, невозможно дать много советов. Я не вижу в этом особой математики - просто поддерживайте высоту прокручиваемого компонента, вид, в котором он находится, и размер полосы прокрутки должен соответствовать пропорции видимого компонента. Положение полосы прокрутки должно совпадать с тем, какая часть компонента видна (это нужно будет масштабировать). В частности, что вы хотите знать?

0 голосов
/ 28 февраля 2009

Хотя это и не Java2D, этот простой фрагмент кода может помочь:

http://processing.org/learning/topics/scrollbar.html

...