1

Тема: JavaFX робота з другими класами

Добрий день в JavaFX клас контролер являється головним я так зрозумів і що взагалі ніяк не можна створити другий клас а ньому методи прослуховування кнопок? а потім в класі контролер їх визивати? пробував наслідування від класу контролер то не помогло.. Може щось підкажите якийсь туторіал?

2

Re: JavaFX робота з другими класами

Клас Controller не є обов'язково головним.
В fxml-документі можна визначити, який клас буде обробником. Для цього потрібно задати атрибут

fx:controller=""

, де прописати шлях до java-файлу.

3

Re: JavaFX робота з другими класами

yooll написав:

Клас Controller не є обов'язково головним.
В fxml-документі можна визначити, який клас буде обробником. Для цього потрібно задати атрибут

fx:controller=""

, де прописати шлях до java-файлу.

а можна кілька файлів записати туди? було б дуже добре

4

Re: JavaFX робота з другими класами

Не впевнений, але думаю, що так. Як правило, цей атрибут додається в тег верхнього рівня. Якщо додати його в інший тег, то події  елементів, які містяться в ньому, мають оброблюватися іншим класом.

5

Re: JavaFX робота з другими класами

yooll написав:

Не впевнений, але думаю, що так. Як правило, цей атрибут додається в тег верхнього рівня. Якщо додати його в інший тег, то події  елементів, які містяться в ньому, мають оброблюватися іншим класом.

Добре спробую)

6

Re: JavaFX робота з другими класами

yooll написав:

Не впевнений, але думаю, що так. Як правило, цей атрибут додається в тег верхнього рівня. Якщо додати його в інший тег, то події  елементів, які містяться в ньому, мають оброблюватися іншим класом.

Добре спробую)
Ні чомусь з двома класами так робити не можна фікс контролер приймає тільки один

7

Re: JavaFX робота з другими класами

Викладіть хоча б частину fxml-коду.

Балаканина нічого не варта. Покажіть мені код.

:)

8

Re: JavaFX робота з другими класами

Мабуть, так просто таки не вийде. Можете подивитися тут:
https://stackoverflow.com/questions/418 … -fxml-file

9

Re: JavaFX робота з другими класами

yooll написав:

Викладіть хоча б частину fxml-коду.

Балаканина нічого не варта. Покажіть мені код.

:)

Я так зрозумів що клас контролер працює з фіксмль із за цього рядка
fx: controller ="sample.Controler" воно обгорнуто грід пейн а я пробував додати новий клас ось так
fx: controller ="sample.Controler, sample.newClasss" але не вийшло, запропонувало створити цей клас а коли створив то всеодно не працює

10

Re: JavaFX робота з другими класами

А навіщо Вам взагалі два контролери?

11

Re: JavaFX робота з другими класами

yooll написав:

А навіщо Вам взагалі два контролери?

ну я хотів щоб в колтролері визивались кнопки а в другому класі були б методи які б визивались у кнопках, був би код менший а файлів більше, я початківець і мені так цікавіше

12

Re: JavaFX робота з другими класами

Що вам заважає в головному контролері зробити так?

button.setOnAction(myClassThatImplementsEventHandlerInterface::handleButtonOnAction);

Хоч би як, таке розділення нічим не цікавіше, тим паче як "для початківця" (початківці мають робити by book, а не вигадувати собі геморой), а перше питання яке собі потім поставиш буде "а як, наприклад, змінити текст label по натисканні" (в другому класі не буде доступу до label якій визначено в контролері; так, можна передавати в конструктор, а сенс?).

Таке має знаходитися в одному контролері. Якщо контролер виходить важким - це сигнал, що треба view розбити на компоненти. Не винести listeners в інший клас, а винести view та її контролер в окремий компонент і вибудувати в головний вію.

Подякували: yooll, leofun012