Из вашего вопроса не совсем ясно, что вы пытаетесь достичь, но я сделаю это с умом.
Если вы хотите передать блок кода на deleteButton.setOnAction()
метод, вы можете использовать Interface
и передавать реализации этого интерфейса классу A
.Затем просто передайте эту ссылку внутреннему методу для onAction
лямбды.
Вот очень быстрый пример того, как вы можете сделать что-то вроде этого:
Main.java:
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Action button
Button btnDoSomething = new Button("Do something...");
btnDoSomething.setOnAction(e -> doTheThings(new ImplDoSomething()));
Button btnDoSomethingElse = new Button("Do something else...");
btnDoSomethingElse.setOnAction(e -> doTheThings(new ImplDoSomethingElse()));
VBox mainPane = new VBox(5);
mainPane.setAlignment(Pos.CENTER);
mainPane.setPadding(new Insets(10));
mainPane.getChildren().addAll(btnDoSomething, btnDoSomethingElse);
primaryStage.setScene(new Scene(mainPane));
primaryStage.show();
}
private void doTheThings(IParameterMethod parameterMethod) {
parameterMethod.call();
}
}
Интерфейс IParameterMethod.java:
public interface IParameterMethod {
void call();
}
Затем вы можете создать столько классов, сколько вам нужно, чтобы реализовать этот интерфейс, каждый сих собственный метод call()
, позволяющий выполнять другой код.
ImplDoSomething.java
public class ImplDoSomething implements IParameterMethod {
@Override
public void call() {
System.out.println("Doing something!");
}
}
ImplDoSomethingElse.java:
public class ImplDoSomethingElse implements IParameterMethod {
@Override
public void call() {
System.out.println("Doing something else!");
}
}
Это должно быть легко адаптировано для вашего проекта.