Я переношу приложение, содержащее JavaFX 2
на OpenJDK11
.У меня ошибка из-за исчезновения наследования SkinBase
с StackPane
.Я больше не могу использовать методы, такие как методы событий (определенные в Node
), getChildren()
(определенные в Parent
) и многие другие, которые требуют наследования ...
Это мой предыдущий класс в Java 1.7, что я хочу в JDK11:
public class WellPlateSkin<T> extends SkinBase<WellPlate, WellPlateSkin.DummyBehaviour>
{
public WellPlateSkin(final WellPlate control) {
super(control, new DummyBehaviour(control));
...
setOnMouseDragged(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent mouseEvent)
{
dragging = true;
onMouseDragged(mouseEvent);
}
});
setOnMousePressed(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent mouseEvent)
{
mousePressed = new Point2D(mouseEvent.getX(), mouseEvent.getY());
getChildren().add(glass);
removeSelection();
rubber.setHeight(0);
rubber.setWidth(0);
dragging = false;
}
});
setOnMouseReleased(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent mouseEvent)
{
if (!dragging) {
selectNode(new Point2D(mouseEvent.getX(),mouseEvent.getY()));
}
mousePressed = null;
getChildren().remove(glass);
dragging =false;
}
});
Эти методы наследуют от Class Node или Parent. Это работает, потому что подпись SkinBase была (до JavaFX8):
public abstract class SkinBase<C extends Control, B extends BehaviorBase<C>> extends StackPane implements Skin<C> {
И StackPane являетсяпотомок Pane, который является потомком Region, который является потомком Parent и который является потомком Node.
Теперь, в JDK11, подпись SkinBase
public abstract class SkinBase<C extends Control> implements Skin<C> {
Наследованиебольше не существует, и эти функции больше не определены (супер () тоже).Каков наилучший способ решить эту проблему?Спасибо за ваш ответ!