Java: передача переменных между классами - PullRequest
2 голосов
/ 28 августа 2009

Вероятно, это действительно простая проблема, но я не могу понять, как это сделать.

У меня есть класс GUI со слушателем, который берет переменные из выпадающих списков и ползунков. Мне нужно, чтобы эти переменные передавались в метод другого класса, который будет запускаться на объекте этого класса.

Как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 28 августа 2009

Есть два общих подхода. Простой, часто используемый для диалогов, делает выбранные значения (например, ваш выбор в выпадающем списке) доступными для других классов, второй позволяет другим классам регистрироваться в вашем объекте для получения уведомлений об обновлениях.

Первый подход

  1. сохраняет фактический выбор элементов GUI в (приватных) переменных-членах (например: private String currentSelection). Это делается слушателем, который вы уже реализовали.
  2. реализовать метод, подобный String getSelection()
  3. Когда диалог завершен (как кто-то нажал кнопку ОК), извлеките значение, просто вызвав метод getSelection()

Это можно использовать, если вы предлагаете пользователю диалог для ввода некоторых значений. Диалоги выбора файлов являются типичным примером. Если вам требуется доступ к текущему выбору в режиме реального времени, используйте:

Второй подход

  1. Реализация шаблона наблюдателя (класс слушателя, в конечном итоге класс события)

Шаблон слишком сложен, чтобы объяснять его шаг за шагом и в деталях, но есть много документации и примеров, если вы заинтересованы и действительно нуждаетесь в доступе к изменениям в реальном времени.

1 голос
/ 28 августа 2009

Вы можете использовать Java Observer и передавать любой объект в качестве аргумента при изменении состояния.

1 голос
/ 28 августа 2009

Простой класс данных (в идеале перед интерфейсом, чтобы минимизировать связь) должен сделать свое дело. Или, если имена членов данных и другие изменяются во время выполнения, может подойти java.util.Map.

0 голосов
/ 25 ноября 2009

Использовать параметры.

otherObject.doStuff(comboBoxValue, slider1Value, slider2Value);

Метод, который вы вызываете, должен быть объявлен для принятия количества параметров, которые вы хотите передать:

class OtherObject {
    ...
    void doStuff(int value1, int value2, int value3);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...