Как реализовать автоматическую прокрутку при перетаскивании объектов внутри панели JavaFX?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как реализовать автоматическую прокрутку при перетаскивании объектов внутри панели JavaFX?

Сообщение Anonymous »

Я попробовал добавить прямоугольники по краям, чтобы создать фиксированные области для обнаружения, и теперь, где бы я их ни добавлял, они не отображаются на экране и не работают.
Изначально я использовал некоторые math и макет x/y, чтобы определить, находится ли он рядом с краем, но в любом случае это будет работать только в исходном рабочем пространстве. Мне нужно, чтобы он автоматически прокручивался при перетаскивании к краю, независимо от того, к какому месту рабочей области вы прокручиваетесь.
Это созданный мной обработчик createAutoScrollAreas, в котором возникает проблема. Я пробовал переделывать это много раз и решил все, кроме автоматической прокрутки.
private void createAutoScrollAreas() {
if (workspacePane == null) {
logger.error("WorkspacePane is not initialized.");
return;
}

double stageWidth = workspacePane.getWidth();
double stageHeight = workspacePane.getHeight();

// Create rectangles for each edge
Rectangle topEdge = new Rectangle(0, 0, stageWidth, EDGE_THRESHOLD);
Rectangle bottomEdge = new Rectangle(0, stageHeight - EDGE_THRESHOLD, stageWidth, EDGE_THRESHOLD);
Rectangle leftEdge = new Rectangle(0, 0, EDGE_THRESHOLD, stageHeight);
Rectangle rightEdge = new Rectangle(stageWidth - EDGE_THRESHOLD, 0, EDGE_THRESHOLD, stageHeight);

// Make them visible for debugging
topEdge.setStyle("-fx-fill: rgba(255, 0, 0, 0.5);");
bottomEdge.setStyle("-fx-fill: rgba(0, 255, 0, 0.5);");
leftEdge.setStyle("-fx-fill: rgba(0, 0, 255, 0.5);");
rightEdge.setStyle("-fx-fill: rgba(255, 255, 0, 0.5);");

// Add event handlers
addAutoScrollHandler(topEdge, true, false, false, false);
addAutoScrollHandler(bottomEdge, false, true, false, false);
addAutoScrollHandler(leftEdge, false, false, true, false);
addAutoScrollHandler(rightEdge, false, false, false, true);

// Add to the workspace pane
MainView.getInstance().addAllToWorkspaceScroll(topEdge, bottomEdge, leftEdge, rightEdge);
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... avafx-pane
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»