Я новичок, совсем, поэтому мне пожалуйста как нубу.
Есть GUI созданный через Scene Builder. Одна из кнопок GUI запускает новый Thread со своей реализацией в другом классе, который в последующем должен менять значение в самом GUI(Text в основном) на новые значения.
Если сделать в контроллере кнопку UPDATE к примеру, и приписать ей setText какого нибудь text, все конечно будет работать. Но это не наш случай.
Вопрос 1. Если сделать костыль ради эксперимента в виде public static(в контроллере к переменной Text) и попытаться setText из нового потока в другом классе - не работает, во всяком случае в GUI Нового значения не отображается. А надо чтобы отображались новые значения.
Вопрос 2. Я понимаю что использовать public static Text(в контроллере) в данном случае является ошибкой. В таком случае как правильно обращаться к контроллеру(и нужно ли вообще?) чтобы изменять те или иные значения, или обращаться к функциям?
Вообще знает кто нибудь что почитать на русском по Scene builder + javaFX или может авторов на ютубе каких нибудь?
Кароче все оказалось намного проще. Для того чтобы изменить например Text вне контролера,надо передать сам контролер при создании объекта например(Pon4ik pon4ik = new Pon4ik(this)) где в конструкторе ему будет присвоена соответствующая переменная типа(COntroller guiController = pon4ik) и потом уже можно свободно обращаться к переменным контроллера присвоив им public доступ например guiController.TextField.setText("hello"). Не благодарите :))
Создать метод, который должен вызываться для обновления текста
public void setText(String text){...
В другой поток передать метод, который должен быть вызван для обнволение текста. То есть, в другом классе должно быть что-то вроде.
Consumer<String> consumer;
..
public void setOnUpdateText(Consumer<String> consumer){
this.consumer = cunsumer;
}
В момент когда необходимо обновить текст вызывать
comsumer.accept("Новый текст");
Так же, нельзя изменять содержимое интерфейса из других потоков, кроме потока пользовательского интерфейса. Потому необходимо использовать Platform.runLater();
Platform.runLater(() -> {
consumer.accept("Новый текст");
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
коллеги! Опишу кратко ситуацию (приготовтесь к тяжелому материалу): Есть приложение с авторизацией через сайт, средствами вот этой библиотеки...
Подскажите, где может быть проблема: Имею сервер, к которому соединяются устройства по tcp socket, на каждое красиво создаётся потокСоединившись,...
Выдаёт ошибку при компилиции, пока не дошел до switch всё идёт нормально, а потом ошибкаГде моя ошибка?
Здравствуйте кидает Exception ConcurrentModificationException на этой строчке for (Transaction t : cgetTransactions())(64 строчка) на 2 итерации