Ответы пользователя по тегу JavaFX
  • Java, как правильно работать с окнами?

    legbo
    @legbo
    Java developer and philosopher
    Можно объявить целый класс как static или без static но в нем некоторые переменные, методы, как static и иметь к ним доступ со всех частей программы в любой момент времени. Т.е. и таким образом выстроить взаимодействие между различными контроллерами окон. В этом классе можете хранить только нужные ссылки на объекты и использовать их в нужно время, соответственно будет и нужное Вам ограниченное взаимодействие.

    Я постоянно пользуюсь данным способом для осуществления коммуникации между окнами, вполне рабочее решение, без затраты ресурсов и времени.

    Пример: например в блоке initialize создаете этот наш общий класс, через конструктор или через метод устанавливаете все нужные ссылки на нужные объекты, например какие-нибудь поля или нужные переменные. Затем в другом контроллере окна в любом месте Вы уже можете получить доступ к уже общим полям, переменным и тому, что Вы сочли нужным.

    Я как понимаю Вы новичок, то вот держите простой пример:
    public static class outStaticClass{
       public Button commonButton; //Общая кнопка.
     }


    public class controllerWindow1 implements Initializable{
       private Button ourButtonForCommonClass;
       ...
      @Override
        public void initialize(URL url, ResourceBundle rb) {
         ourButtonForCommonClass = new Button("First button");
         outStaticClass oSC = new outStaticClass();
         outStaticClass.commonButton = ourButtonForCommonClass; // Сохранили ссылку на объект
        }
     }


    public class controllerWindow2 implements Initializable{
      ... 
      //В любом месте  outStaticClass oSC = new outStaticClass();
      //и у нас есть доступ к объекту из первого окна controllerWindow1
      //можем изменить его текст или сделать disabled
      //лучше сделать не прямое взаимодействие через наш общий класс.
     }


    По поводу лицензии я без понятия если честно, задайте отдельно вопрос, тоже кстати интересно.

    Дополнение
    Можете также, через static связать по средством bind многие поля, значения и так далее.
    Ответ написан
    Комментировать