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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить имя объекта/переменной из слушателя!? 
V
    Опции темы
freshAngel
  Дата 16.5.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть такой код:
Пытаюсь узнать имя компонента, по которому щелкнули мышкой.
На выходе в консоле хочу увидеть что - то типа: Panel1

Код

class MyGamePanel extends MouseAdapter
{
Panel1.addMouseListener(this);
Panel2.addMouseListener(this);

public void mouseClicked(MouseEvent e) {
System.out.println(e.getComponent().getName());
}
} // class


Но постоянно выводится: null

Если изменить немного:
Код

System.out.println(e.getComponent().getClass().getName());


То выводит: javax.swing.JPanel
Но это и так понятно, мне нужно именно имя переменной типа JPanel.

Или как можно вывести не имя, а номер компонента!?
Например, я добавил add(Panel1) пятой компонентой по счету в свой контейнер, то как можно получить этот номер!?

Суть задачи заключается в том, что на основании полученных названий: Panel1, Panel2 необходимо будет изменять строки матрицы.
Например, если Panel1 то первая строка матрицы. Если Panel2, то вторая и т.д.


Это сообщение отредактировал(а) freshAngel - 16.5.2009, 17:10
PM MAIL   Вверх
math64
Дата 16.5.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Код

public void mouseClicked(MouseEvent e) {
  JPanel panel = (JPanel)e.getComponent();
  if (panel == panel1) {
    System.out.println("panel1");
  else if (panel == panel2)
    System.out.println("panel2");
}

PM   Вверх
freshAngel
  Дата 16.5.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(math64 @ 16.5.2009,  18:05)
Код

public void mouseClicked(MouseEvent e) {
  JPanel panel = (JPanel)e.getComponent();
  if (panel == panel1) {
    System.out.println("panel1");
  else if (panel == panel2)
    System.out.println("panel2");
}

Спасибо.
А без сравнения, нельзя сразу вывести: Panel1, Panel2!?
Тоесть получить имя переменной объекта!?
И еще интересно, а что сравнивается в данном случае:

Код

JPanel panel = (JPanel)e.getComponent();
if (panel == panel1)
{
}


Области памяти, названия переменных!?

Это сообщение отредактировал(а) freshAngel - 16.5.2009, 18:10
PM MAIL   Вверх
W0LF
Дата 16.5.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Цитата

Области памяти, названия переменных!?

ссылки =)


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Connie
Дата 16.5.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что бы узнавать имя по методу getName(), нужно вначале, например, при инициализации объекта устанавливать его

Код

JPanel panel11 = new JPanel();
panel11.setName("Привет, я панель №11");

PM MAIL WWW   Вверх
freshAngel
  Дата 16.5.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Придумал как сделать  smile 
Не самый лучший вариант, но все - же: 
Код

class MyGamePanel 
{
Panel1.addMouseListener(new MyAdapter(1));
Panel2.addMouseListener(new MyAdapter(2));
 
class MyAdapter extends MouseAdapter
{
int idpanel = 0;
public MyAdapter(int idpanel)
{
this.idpanel = idpanel;
}
public void mouseClicked(MouseEvent e) {
System.out.println("Панелька: "+idpanel);
}
} // class

} // class


Вот например для кнопки (ActionEvent e) есть метод:
Код

String namepanel = e.getActionCommand();


Который по умолчанию возвращает метку (название) кнопки.
Жалко, что для других объектов ничего подобного нет   smile 

Connie, это - то что нужно!
А то у меня всегда имя null выдавалось...

Connie, math64, WOLF - спасибо!
Разобрался!



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

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

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


 




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


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

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