Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к другому классу. 
:(
    Опции темы
NeoDin
Дата 24.4.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.7.2005
Где: Ташкент/UZ

Репутация: нет
Всего: нет



Попросили помочь. А в java я не очень. Подскажите. 

Есть два класса. В одном кнопочки, В другом JTextField.
Оба класса создаются в Main. 
Как в обработчике нажатия кнопочки (actionPerformed из класса с кнопочками) получить значение  JTextField другого класса?

 
PM MAIL WWW ICQ   Вверх
garm
Дата 24.4.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.3.2006

Репутация: нет
Всего: 2



Тебе нужно в методе actionPerformed иметь ссылку на объект класса с текстовым полем.
А у этого класса(с текстовым полем) должен быть метод, возвращающий либо JTextField, либо сразу его значение. Значение JTextField можно узнать вызвав его метод getText(). 
PM   Вверх
NeoDin
Дата 24.4.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.7.2005
Где: Ташкент/UZ

Репутация: нет
Всего: нет



Цитата(garm @ 24.4.2006,  14:06)
Тебе нужно в методе actionPerformed иметь ссылку на объект класса с текстовым полем.
А у этого класса(с текстовым полем) должен быть метод, возвращающий либо JTextField, либо сразу его значение. Значение JTextField можно узнать вызвав его метод getText().

Вот и вопрос, как получитьо эту ссылку. 
есть ли аналог php-шной global?
 
PM MAIL WWW ICQ   Вверх
Metal_Heart
Дата 24.4.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



вот держи класс приемника:
Код

import javax.swing.*;
//-----------------------------------------------------------------
public class Test extends JFrame
{
private JTextField textField = new JTextField();
//-----------------------------------------------------------------
public Test()
{
 setTitle("приемник");
 setSize(200,50);
 add(textField);
 setVisible(true);
}
//-----------------------------------------------------------------
public void setString(String s)
{
 textField.setText(s);
}
//-----------------------------------------------------------------
}


и класс источника событий:

Код

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;

//-----------------------------------------------------------------
public class Test_Button extends JFrame
{
private JButton button = new JButton();
private JTextField textField = new JTextField();
private Test    test   = new Test();
//-----------------------------------------------------------------
public Test_Button()
{
 setTitle("источник"); 
 setSize(200,100);
 setLayout(new GridLayout(2,1));
 add(textField);
 add(button);
 button.addActionListener(actionListener);
 setVisible(true);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//-----------------------------------------------------------------
private ActionListener actionListener = new ActionListener()
{
 public void actionPerformed(ActionEvent e)
  {
   test.setString(textField.getText());
  }
};
//-----------------------------------------------------------------
public static void main(String[] args)
{
 new Test_Button();
}
//-----------------------------------------------------------------
}
 


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
garm
Дата 24.4.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.3.2006

Репутация: нет
Всего: 2



Цитата(NeoDin @  24.4.2006,  19:13 Найти цитируемый пост)
Вот и вопрос, как получитьо эту ссылку. 
есть ли аналог php-шной global?

Не в курсе, что такое php-шная global но, наверное, нету.
Тем не менее способов - тьма.
Как вариант - то что предложил Metal_Heart.
Если же совершенно необходимо оба объекта создавать в методе main, то классу источнику событий можно сделать конструктор с нужной ссылкой в качестве параметра, или метод setLink(нужная_ссылка). 
PM   Вверх
jimur
Дата 24.4.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: нет
Всего: 3



Если приложение маленькое, сделай этот JTextField public static и не мучайся.
Код

public MyClass {
public static final JTextField field = new JTextField();
}


Если больше 3 классов - лучше его делать используя какой-нить IoC контейнер типа Spring Framework. Там связывание объектов делается правильно, т.е. без лишних знаний друг о друге.
 
PM MAIL   Вверх
NeoDin
Дата 25.4.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.7.2005
Где: Ташкент/UZ

Репутация: нет
Всего: нет



У тебя внутри одного класса другой. А по условию это два разных не содержащих друг друга класса.
 
PM MAIL WWW ICQ   Вверх
Metal_Heart
Дата 25.4.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



я кажется понял, что ты имел ввиду, придется подождать..
  

Это сообщение отредактировал(а) Metal_Heart - 25.4.2006, 14:24


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Metal_Heart
Дата 25.4.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



чуток изменил класс источника событий:

Код

...
private JTextField textField = new JTextField();
private Test    test;
//-----------------------------------------------------------------
public Test_Button(Test tst)
{
 test = tst; 
 setTitle("источник");
 setSize(200,100);
 ...
}


и, собственно, main:
Код

 Test test = new Test();
 new Test_Button(test);


теперь должно удовлетворять условию задачи 


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
NeoDin
Дата 25.4.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.7.2005
Где: Ташкент/UZ

Репутация: нет
Всего: нет



Цитата(jimur @ 24.4.2006,  22:25)
Если приложение маленькое, сделай этот JTextField public static и не мучайся.
Код

public MyClass {
public static final JTextField field = new JTextField();
}


Если больше 3 классов - лучше его делать используя какой-нить IoC контейнер типа Spring Framework. Там связывание объектов делается правильно, т.е. без лишних знаний друг о друге.

а как его увидеть из др. класса? 
 
PM MAIL WWW ICQ   Вверх
ShamanTrirukiy
Дата 25.4.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.4.2006
Где: Харьков

Репутация: 1
Всего: 5



Цитата(NeoDin @  25.4.2006,  14:58 Найти цитируемый пост)
а как его увидеть из др. класса? 

Код

import javax.swing.*;

public class TestTF {
  public static JTextField testTf = new JTextField(); 
}


Код

public class TFTester {
  public void test() {
    TestTF.testTf.setText("test");
  }
}


Только, насколько мне известно, статикой злоупотреблять не стоит  

Это сообщение отредактировал(а) ShamanTrirukiy - 25.4.2006, 15:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0874 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.