Есть ли способ в JavaFX создать класс, который расширяет Group
и ограничивать его только принятием Shape
объектов в качестве детей?Группы JavaFX, которые принимают определенные типы объектов
ответ
Рассмотрите возможность создания класса-оболочки вместо подкласса. Что-то вдоль линий
public class ShapeGroup {
private final Group group = new Group() ;
public void addShape(Shape s) {
group.getChildren().add(s);
}
public void removeShape(Shape s) {
group.getChildren().remove(s);
}
// other methods you want to expose, implemented similarly...
public Parent asParent() {
return group ;
}
}
И теперь вы можете использовать это следующим образом:
ShapeGroup shapeGroup = new ShapeGroup();
shapeGroup.addShape(new Circle(50, 50, 20));
shapeGroup.addShape(new Rectangle(20, 20, 30, 30));
// ...
Scene scene = new Scene(shapeGroup.asParent());
// etc..
Спасибо James_D. Да, это решение, о котором я думал, но надеялся на другой способ избежать написания оберток для всех методов, которые я мог бы использовать из Group: /. Недавно я начал использовать параметры типа, я не уверен, почему Java не имеет этого для групп. Возможно, я ошибаюсь, но это звучит неплохо ... – melkhaldi
Слишком много параметров типа загромождали API и делали бы его слишком сложным. В «Группе» очень мало методов, которые не унаследованы от «Parent», а «Parent» предоставляет только дочерние узлы в качестве немодифицируемого списка, поэтому в этом случае вам не нужно писать для обертки. –
Попробуем. Благодаря! – melkhaldi
- 1. Шаблон специализации: шаблоны C++, которые принимают только определенные типы (повторно)
- 2. C# Типы, которые принимают индексирование
- 3. Erlang Dialyzer: принимают только определенные целые числа?
- 4. Почему параметры не принимают общие типы?
- 5. DirtyAttributes принимают как измененные типы BigDecimal
- 6. Ограничения принимают либо типы в дженериков
- 7. Определенные пользователем типы таблиц
- 8. Устранить определенные методы/типы
- 9. Функции обработки вызовов, которые используют определенные типы на Suds, Python
- 10. Типы обработки, определенные в плагинах, которые больше не доступны
- 11. Невозможно скрыть определенные типы объектов в Картах Google
- 12. Как вы тестируете методы, которые принимают перечисления
- 13. г data.table - исключить группы, которые содержат определенные значения в строках
- 14. Попытки запросить определенные группы, которые удовлетворяют условие value_count
- 15. Различные типы пользователей группы
- 16. Javafx - Клипарт для группы?
- 17. Могу ли я определить функции C, которые принимают родные типы Go через CGo?
- 18. Как создать параметры, которые принимают любой числовой тип
- 19. Определение интерфейсов для функций, которые принимают только функции
- 20. кукольные определенные типы и переменные
- 21. Как удалить определенные типы строк?
- 22. Как загрузить определенные типы файлов?
- 23. Определенные пользователем типы таблиц Недоступно
- 24. Как определить @list_route, которые принимают аргументы
- 25. Контейнеры Objective-C, которые принимают объекты
- 26. Подпрограммы, которые принимают необязательный параметр блока
- 27. Constructor, которые принимают параметры по умолчанию
- 28. ACTION_SEND: можно фильтровать приложения, которые принимают вложения?
- 29. Регулярные выражения, которые принимают Apostrophes в PHP
- 30. Создание моделей в машинописи, которые принимают инъекционные
Override метод, который принимает Узлов к Shapes – Steven
@Strven: Вы не можете переопределить метод с реализации, которая использует разные (кроме стирания стилей), и даже если вы не могли этого сделать, так как он нарушает [принцип замены Лискова] (https://en.wikipedia.org/wiki/Liskov_substitution_principle). – fabian
Спасибо Стив. @Fabian, действительно, я не мог переопределить метод getchildren(). Add (...). Спасибо за ссылку. Я буду читать. – melkhaldi