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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить объект на JLabel, Graphics 2D 
:(
    Опции темы
can4ec
Дата 11.2.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте коллеги!
Проблема в следующем. На JLable с помощью метода painComponent(....) я отрисовываю элипс. Я создаю его объект Ellipse2D и рисую его draw(...). Как мне теперь при клике мышки на окне определить на какой из элипосв я произвел действие (кликнул мышкой) ?
PM MAIL   Вверх
dorogoyIV
Дата 11.2.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

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

class can4ec extends JFrame
{
 can4ec()
 {
  setBounds(100,100,400,300);
  setLayout(new FlowLayout());

  add(new MyLabel("1"));
  add(new MyLabel("2"));
  add(new MyLabel("3"));
 }

 public static void main(String [] args)
 {
  JFrame f=new can4ec();
  f.setVisible(true);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

class MyLabel extends JLabel
              implements MouseListener
{
 MyLabel(String name)
 {
  setPreferredSize(new Dimension(30, 20));
  setName(name);
  setToolTipText(name);
  addMouseListener(this);
 }

 public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  g.drawOval(1, 1, 28, 18);
 }

 public void mouseEntered(MouseEvent e){}
 public void mouseExited(MouseEvent e){}
 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}
 public void mouseClicked(MouseEvent e)
 {
  System.out.println(((JLabel)e.getSource()).getName());
 }
}


PM MAIL   Вверх
can4ec
Дата 11.2.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(dorogoyIV @ 11.2.2008,  12:23)
Код

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

class can4ec extends JFrame
{
 can4ec()
 {
  setBounds(100,100,400,300);
  setLayout(new FlowLayout());

  add(new MyLabel("1"));
  add(new MyLabel("2"));
  add(new MyLabel("3"));
 }

 public static void main(String [] args)
 {
  JFrame f=new can4ec();
  f.setVisible(true);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

class MyLabel extends JLabel
              implements MouseListener
{
 MyLabel(String name)
 {
  setPreferredSize(new Dimension(30, 20));
  setName(name);
  setToolTipText(name);
  addMouseListener(this);
 }

 public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  g.drawOval(1, 1, 28, 18);
 }

 public void mouseEntered(MouseEvent e){}
 public void mouseExited(MouseEvent e){}
 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}
 public void mouseClicked(MouseEvent e)
 {
  System.out.println(((JLabel)e.getSource()).getName());
 }
}


Но вы использует простой метод g.drawOval(1, 1, 28, 18);, а мне в моей дальнейшей работе лучше бы было использовать Ellipse2D. А вот с ним такое у меня не получается.
PM MAIL   Вверх
Platon
Дата 11.2.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  ((Graphics2D)g).draw(new Ellipse2D.Float(1, 1, 28, 18));
 }


Это сообщение отредактировал(а) Platon - 11.2.2008, 13:19
PM MAIL ICQ   Вверх
can4ec
Дата 11.2.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Platon @ 11.2.2008,  13:15)
Код

public void paintComponent(Graphics g)
 {
  super.paintComponent(g);
  ((Graphics2D)g).draw(new Ellipse2D.Float(1, 1, 28, 18));
 }

ты это пробовал так написать как в твоем примере??? у меня это еще изначально ничего не показывало.
PM MAIL   Вверх
Platon
Дата 16.2.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Да у меня всё замечательно работает.

Добавлено через 1 минуту
Цитата(can4ec @  11.2.2008,  14:34 Найти цитируемый пост)
ты это пробовал так написать как в твоем примере???

конечно, я интуитивно догадался, что ты спрашиваешь, не факт, что правильно понял.
PM MAIL ICQ   Вверх
dorogoyIV
Дата 16.2.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



can4ec, не важно, как ты нарисовал компонент.
в твоем случае(вопросе) просто надо повесить на него какой то слушатель, ну и естественно обработчик на него. здесь MouseListener
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.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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