Так получилось, что API этого полезнейшего компонента был изменен в последний момент перед релизом JavaFX 2.0 Beta. В результате мы получили следующий пример в официальной документации:
SplitPane sp = new SplitPane();
sp.setLeft(new Button("LEFT BUTTON"));
sp.setRight(new Button("RIGHT BUTTON"));
sp.setDividerLocation(0.4f); Если вы попробуете использовать этот пример в своей программе, то столкнетесь с неприятной проблемой. Класс SplitPane не имеет методов setLeft или setRight. Кто виноват и что делать? Прежде всего не следует нервничать. Создатели компонента посчитали, использование методов setLeft, setRight, setTop, setBottom не очень удобным и хорошим с точки зрения использования. Более того, этот вариант API плохо масштабируется. Представим, что нам нужно разделить панель не на 2 участка, а на 3 или более? Решение такой задачи может оказаться очень некрасивым с таким API. Именно поэтому в релизе было решено использовать другой, более гибкий подход.
В SplitPane были добавлены методы для управления внутренним списком компонентов. Таким образом пользователь просто добавляет необходимое количество компонентов в список и указывает какая ориентация у SplitPane. Далее можно посмотреть вариант кода, который будет работать на текущей версии JavaFX:
SplitPane p1 = new SplitPane();
SplitPane p2 = new SplitPane();
SplitPane p3 = new SplitPane();
p1.getItems().addAll(p2, p3);
p2.setOrientation(Orientation.VERTICAL);
p3.setOrientation(Orientation.VERTICAL);
p2.getItems().addAll(new Label("1"), new Label("2"));
p3.getItems().addAll(new Label("3"), new Label("4"), new Label("5"));
Если выполнить этот код, то мы увидим примерно следующую картинку:


0 comments:
Post a Comment