Java JFrame и другое взаимодействие классов

Я нашел похожий вопрос, но он мне все еще неясен.

Итак, у меня есть основной класс ProcessorCalculations(), из которого я вызываю класс MainFrame(). В классе MainFrame пользователь должен выбрать папку. Как передать объект JFileChooser() из MainFrame() в ProcessorCalculations()?

Я попытался реализовать подсказку из ссылки выше:

   ProcessorCalculation processor = new ProcessorCalculation();
   MainFrame mainFrame = new MainFrame(processor);

Но я не знаю, как вызывать processor методы из mainFrame без создания новых объектов. Даже я не знаю правильный вопрос, который я должен задать Google. Помогите, пожалуйста.


person VasG    schedule 28.07.2012    source источник


Ответы (2)


Если вы используете код, написанный выше, то вы передаете текущий экземпляр процессора в свой конструктор MainFrame. Что вы делаете со ссылкой из этого конструктора? Вы устанавливаете экземпляр ProcessorCalculation для этой ссылки? Пожалуйста, покажите нам свой конструктор.

Ваш класс MainFrame должен выглядеть примерно так...

public class MainFrame extends JFrame {
   // your ProcessorCalculation field  
   private ProcessorCalculation processor;

   public MainFrame(ProcessorCalculation processor) {
      // set the field with ref passed in parameter
      this.processor = processor; 

      // of course other code goes here
   }

   public void someMainFrameMethod() {
      // use the reference
      processor.someProcessorMethod();
   }

}
person Hovercraft Full Of Eels    schedule 28.07.2012

Создайте атрибут, скажем, например, files в мэйнфрейме, по которому ссылаются на содержимое JFileChooser() (вы можете сказать, что содержимое хранится в этом атрибуте). Если этот атрибут является частным, поместите методы установки геттера в мейнфрейм для этого атрибута (чтобы сделать его доступным из других классов), теперь возвращаясь к вашему классу ProcessorCalculation, когда вы пишете mainFrame.getFiles() (вы уже создали объект mainFrame объект там), он возвращает данные, которые вы хотел в этом классе.

Если вы все еще сталкиваетесь с проблемой, попросите закодированное решение, которое я сделаю.

person Sanyam Goel    schedule 28.07.2012