2014-06-28 3 views
-1

Я хочу, чтобы установить переменную, используя поглотитель и сеттеров в одном классе и быть в состоянии получить это значение из другого классаМожете ли вы установить переменную с помощью кнопки и использовать ее в другом классе?

Класс 1

btnLockIn = new JButton("Lock In"); 
    btnLockIn.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      a = textTable.getText(); 
      setTable(a); 
      System.out.println(a); 

     } 
    }); 

Это устанавливает номер таблицы на то, что пользователь ставит и что я хочу сделать, это получить значение, которое они устанавливают для использования в другом классе. в настоящее время он во втором классе, используя getTable, все, что я получил, - это значение по умолчанию, которое его значение равно null.

Класс 2

Class1 log = new Class1(); 
    final String Table_no = log.getTable(); 

    JLabel lblTableNo = new JLabel("Table no: " + Table_no); 
    lblTableNo.setBounds(10, 15, 100, 14); 
    contentPane.add(lblTableNo); 

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

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

+0

Вы создаете новый экземпляр и затем вызвать 'GetTable 'на этом. Вам нужно предоставить один и тот же экземпляр класса Class1. –

+0

Не могли бы вы предоставить то, что действительно делает Class2? и кто его создает? – damienix

ответ

1

Ваша проблема: Class1 log = new Class1(); Это создает новый экземпляр Class1.

Подумайте о покупке нового шара и нанесении на него наклейки. Мяч - Class1, а кнопка - наклейка. Вы пытаетесь купить новый мяч и снять с него наклейку, но наклейка все еще находится на первом шаре. Вам нужно получить доступ к уже созданному классу. Попробуйте использовать статические методы.

+0

Спасибо, я попробую, что – user3786637

+0

О, пожалуйста, не советуйте ему использовать статические! : | – damienix

0

Вариант 1: Class1 передается class2

В Class2

Class1 log = class1; 

и class1 следует принимать, например, в конструктор Class2.

Как заметил пользователь3769237, ваш приемник должен быть вызван после того, как событие ActionListener активировано.

Вариант 2: Class2 реализует ActionListener

В Class1

btnLockIn.addActionListener(yourClass2Instance); 

сделать Class2 осуществлять ActionListener и implenent следующим

@Override 
public void actionPerformed(ActionEvent arg0) { 
    a = textTable.getText(); 
    // do with a whatever you want 
} 
Смежные вопросы