Используйте метод из другого JavaFX класса Java

Поэтому, если вы знакомы с JavaFX, объекты Buttons можно изменить с помощью следующих методов Node

myButton.setTranslateX(10);
myButton.setTranslateY(-10);

Эти методы работают внутри

public void start(Stage primaryStage) throws Exception {}

Насколько я понимаю, start - это метод в Application для запуска цели JavaFX. Поскольку все объекты myButton будут иметь одинаковую структуру, я попытался сделать следующий метод в файле Main.java

public void createMyButton(double X, double Y, String label, String image_path) throws Exception {
    this.setTranslateX(X);
    this.setTranslateY(Y);
    this.setText(label);
    //TO DO this.setButtonImage(src=image_path);
 }

Однако я понимаю, что методы внутри createMyButton из другого класса (я думаю, из Node ). И (конечно) я получаю ошибку

Cannot resolve method 'setTranslateX' in 'Main' s

поскольку компилятор ищет эти методы в моей программе, а не в JavaFX SDK. Как я могу вызвать другие методы класса в моих собственных методах? Я пробовал с

public void createMyButton(bla bla) throws Exception extends Node
public void createMyButton(bla bla) throws Exception extends Application

но я думаю, что я полностью вне алмаза. Я также пытаюсь создать свой собственный class который наследует методы от другого class но это немного за пределами моих текущих знаний, и мне было интересно, есть ли более простой / прямой способ сделать это

Всего 1 ответ


Я не JavaFX человек, но я думаю, проблема в том, что вы вызываете this.setTranslateX(X); в методе, где this не кнопка (я думаю, что это, возможно, главный объект, для большей уверенности нужно больше кода).

Попробуй это:

public Button createMyButton(double X, double Y, String label, String image_path) throws Exception {
    Button button = new Button(...) // not sure how you're initialising your buttons normally
    button.setTranslateX(X);
    button.setTranslateY(Y);
    button.setText(label);
    button.setButtonImage(src=image_path);
    return button
}

Затем, в другом месте, когда вы хотите создать кнопку, вы должны вместо этого вызвать метод:

Button button = createMyButton(10, 20, "My Button", "images/button.png")

Есть идеи?

10000