2014-09-21 19 views
8

Widok albumu w iTunes ma efektowny efekt, ponieważ tytuł albumu i okładka pozostają zawsze widoczne. Jeśli przesuniesz ekran w dół, pozostaną na górze ekranu, dopóki nie wpadną na następny album, a potem się odsuwają.Sterowanie tabelą z przesuwanymi nagłówkami wierszy w języku JavaFX

iPad screenshot

Wskazówki jak górna płyta jest jeszcze w pełni widoczne, mimo że użytkownik przewija w dół do drogi.

  1. Co to jest ta kontrola lub efekt? Zamierzam znaleźć puste miejsca, próbując za to Google.

  2. Jak mogę to zrobić w JavaFX? Chcę to naśladować w moim GUI opartym na Javie. Czy TableView może to zrobić, czy może jakiś kontroler innej firmy?

+2

Ten efekt jest normalnym zachowaniem nagłówka sekcji w UITableView. – rdelmar

Odpowiedz

4

Najłatwiej zrobić to za pomocą ScrollPane. Wewnątrz ScrollPane określasz swoje wiersze i ich układy (prawdopodobnie każdy wiersz to HBox zawierający ImageView i TableView, który jest ustawiony na wysokość ImageView). Następnie, TableViews wewnątrz twojego ScrollPane musi pozwolić ScrollPane na przesłonięcie przewijania - to znaczy, ich onScroll pęcznieje do ScrollPane.

Następnie zastępujesz zachowanie onScroll dla ScrollPane. Algorytm przewijania może wyglądać następująco:

Dostępne są dwa tryby.

1) Przewijanie W albumie przewija widok tabeli w tym wierszu. Jeśli przewijanie wykracza poza granice scrollHeight TableView (zakres od 0 do scrollHeight), to tryb przełącza się na przewijanie do albumu.

2) Przewijanie do albumu powoduje przewinięcie listy ScrollPane do wysokości bieżącego wiersza. Przewijanie o wartość większą niż wysokość bieżącego wiersza przenosi do następnego albumu i przełącza tryb z powrotem do przewijania w tym albumie.

3) Krawędzie krawędzi: Przewijanie w obrębie ScrollPane poza granicami scrollHeight ScrollPane (zakres od 0 do scrollHeight) powoduje natychmiastowe przejście do następnego albumu i przełączenie trybu z powrotem na Scrollling IN tego albumu.

Podam przykład kodu, ale nigdy nie widziałem, żeby ktokolwiek próbował to zrobić.Po prostu wiem, że MOŻESZ to zrobić.

+0

Wygląda na to, że w przypadku iTunes istnieją dwa przewijane panele, ponieważ lewy panel i prawy panel nie mają takich samych wysokości. Można zablokować przewijanie widoków TableView w prawym okienku, przewijając okładkę albumu w lewym okienku, a zamiast przełączać tryby, można przełączać się między tym, który panel przewija się w danym czasie. W ten sposób uzyskałem ten sam efekt, który opisałem, nie wymagając jednak, aby twoje tafle były tej samej wielkości. –

2

polecam Ci spojrzeć na SpreadsheetView w ControlsFX

The SpreadsheetView pozwalają ustalić na szczycie ekranu dowolnej liczby linii. Więc będziesz miał pierwszą część swojego zachowania.

Jeśli chodzi o zderzenie z innym, byłoby trudniejsze, ale nie niemożliwe z poziomu SpreadsheetView.

W każdym razie, jeśli chcesz zaimplementować to zachowanie w TableView, znajdziesz przydatne triki w kodzie SpreadsheetView.