2013-09-03 9 views
6

Muszę utworzyć oś czasu z linią pokazującą aktualny czas. Używam AnchorPane z dodaną linią umieszczoną w ScrollPane. Muszę zasymulować 1 dzień, szerokość scrollpane wynosi (2880px, co 60px to jedna godzina). Moje limity to (poprzedni dzień 12 godzin, a następnego dnia 12 godzin). Przenoszenie mojej linii działa poprawnie.JavaFX Jak przewinąć ScrollPane, aby węzeł znajdował się w środku portu widoku?

Wszystko, co trzeba zrobić, to ustawić linię w środku portu widoku i przenieść zawartość pod nią. Dla przesuwając linię Używam tej metody:

scrollPane.setHvalue(line.getStartX() - anchorPane.width); 

to działa „niby w porządku”. Treść się porusza, ale linia się przemieszcza. Zaczynam, gdy linia ma wartość 0:00 (pozycja jest ustawiona na 0,25) i kończy gdy pozycja jest (0,75) 24 godziny. Jestem również skalowanie moją linię czasu oś y tak

/* where line position is calculate by scale, scale is x2, x3, x4.... */ 
scrollPane.setHvalue(line.getStartX() - anchorPane.width * scale); 

proszę zobaczyć IMG do godziny: 00:00, 12:00, 24:00 ... Prawidłowa pozycja linia jest jedynie o godzinie 12:00. .. Jak zmodyfikować funkcję, aby ustawić pozycję linii?

0:00 hour 12:00 24:00

+0

W skrócie, zielona linia reprezentuje aktualny czas i chcesz, aby zawsze pozostawał w tej samej pozycji w środku suwaka, podczas gdy wykres na osi czasu przepływa od prawej do lewej. Czy to jest poprawne? –

+0

Tak, dokładnie ... Chcę tylko, żeby ten panel pod zieloną linią się poruszył. (najwyższa oś wiąże się z tym) – kingkong

+0

jakiś pomysł? jakaś pomoc? – kingkong

Odpowiedz

0

ja nie wiem, czy do końca rozumiem pytanie. Co wydaje mi się, że masz okienko przewijania z węzłem zielonej linii na nim, prawda? Jeśli tak ...

Jeśli zielona linia jest węzłem, być może można zarejestrować procedurę obsługi zdarzeń dla wyświetlanej wartości okienka przewijania (hvalue, i believe). Na przykład za każdym razem, gdy zmienia się wartość przewijania panelu przewijania, należy dokonać aktualizacji położenia translacyjnego węzła Zielonej linii. Nie jestem ekspertem od układów. JavaFX jest wciąż dla mnie nowością. Ale z tego, co wiem, wydaje się, że można to zrobić. Teoretycznie można to najwyraźniej zrobić.

Powiązane problemy