﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / Java  / Как обработать наезд мышки на кнопку? / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Thu, 20 Nov 2008 02:04:16 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Спасибо.</description><pubDate>Mon, 26 Feb 2001 18:52:00 GMT</pubDate><dc:creator>fimka</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Примерно это выглядит так.Если я правильно понял что Вы имели ввиду.Но это только часть кода и иметй ввиду что Java  не поддерживает MP3 файлы(если Вы собираетесь использовать их).И послушайтесь моего совета.Скачайте API-documentation(http://java.sun.com)  и многие вопросы у вас отпадут.import java.applet.*; Applet appl = new Applet(); try{//место расположения  муз.файла  URL url = new URL(&amp;quot;url&amp;quot;);AudioClip ac = appl.getAudioClip(url);  if(ac!=null)  ac.play();//или loop() если вам нужно непрерывное //проигрование файла.  else{  System.out.println(&amp;quot;No music&amp;quot;);  } catch(MalformedURLException e){}</description><pubDate>Sat, 24 Feb 2001 19:52:00 GMT</pubDate><dc:creator>mishgun</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Насколько я знаю такая возможность существует только начиная с JDK1.2 при помощи статического метода Applet.getAudio()</description><pubDate>Thu, 22 Feb 2001 11:45:00 GMT</pubDate><dc:creator>vladisx</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Спасибо тебе огромное Влад.Это именно то что мне было нужно. Если тебе не затруднительно, мог бы ты ответить на другой вопрос? Он проще.Я написал программу на основе класса Frame. И хотел задействовать в ней звуковые эффекты. Но в этом классе нет свойства PLAY(). Можно ли достичь как-нибудь желаемого?</description><pubDate>Thu, 22 Feb 2001 01:39:00 GMT</pubDate><dc:creator>fimka</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Вот попробовал нечто подобное - всё работает..import java.awt.*;import java.awt.event.*;public class Test4 extends Frame implements MouseListener{			MM[][] mm;	public static void main(String args[]){		System.out.println(&amp;quot;Started&amp;quot;);		new Test4();	}		public Test4(){				setLayout(new GridLayout(6,6));					mm = new MM[6][6];				for (int i=0; i&amp;lt;6; i++)			for (int j=0; j&amp;lt;6; j++){								mm[i][j] = new MM(&amp;quot;*&amp;quot;);				mm[i][j].addMouseListener(this);				add(mm[i][j]);			}							setSize(300, 300);		setBackground(Color.lightGray);		setVisible(true);			}		public void mouseClicked( MouseEvent e ) {		System.out.println(&amp;quot;mouseClicked&amp;quot;);	}	public void mouseEntered( MouseEvent e ){		System.out.println(&amp;quot;mouseEntered&amp;quot;);		((MM) e.getSource()).setBackground (Color.gray );	}	public void mouseExited( MouseEvent e ) {		System.out.println(&amp;quot;mouseExited&amp;quot;);		((MM) e.getSource()).setBackground (Color.lightGray);	}	public void mousePressed( MouseEvent e ) {		System.out.println(&amp;quot;mousePressed&amp;quot;);		((MM) e.getSource()).setBackground (Color.black ); 	}	public void mouseReleased( MouseEvent e ) {		System.out.println(&amp;quot;mouseReleased&amp;quot;);		((MM) e.getSource()).setBackground (Color.lightGray);	}		class MM extends Button {					MM(String text){			super(text);		}			}}</description><pubDate>Tue, 20 Feb 2001 20:13:00 GMT</pubDate><dc:creator>vladisx</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>1)Да. Я наследовал класс Button. Но это не принципиально. Я мог бы обойтись любым другим элементом. Например Canvas. Важно для меня научиться передавать и различать события происходящие с объектом этого моего класса, в базовом классе, к примеру Applet, в котором основная программа и написана.2)Последнее, что я пробывал, увы безуспешно: в моём классе кнопки Field() переопределял:public void processMouseEvent(MouseEvent e){Graphics g;switch(e.getID()){case MouseEvent.MOUSE_PRESSED :Pressed = true;	repaint();	break;case MouseEvent.MOUSE_RELEASED :if(ActList != null){ActList.actionPerformed ( new ActionEvent   (this,ActionEvent.ACTION_PERFORMED,Str));}if(Pressed == true){Pressed = false;repaint();}break;case MouseEvent.MOUSE_ENTERED :if(ActList != null){ActList.actionPerformed ( new ActionEvent (this,ActionEvent.ACTION_PERFORMED,Str));}break;ifcase MouseEvent.MOUSE_EXITED :	break;	}super.processMouseEvent (e);	}//************************************************public void addActionListener(ActionListener List){ActList = AWTEventMulticaster.add (ActList, List);	enableEvents(AWTEvent.MOUSE_EVENT_MASK );}//*******************************************public void removeActionListener(ActionListener List){ActList = AWTEventMulticaster.remove  (ActList, List);}3) Далее в Init() класса Applet определяю массив Своих кнопок. И включаю для каждой слушатель:for(int i=0; i&amp;lt;6; i++)for(int j=0; j&amp;lt;6; j++){Fld[i][j] = new Field(&amp;quot; * &amp;quot;); this.add (Fld[i][j]); Fld[i][j].addActionListener (this);}Далее пытаюсь обработать события от какой-то из этих кнопок:public void actionPerformed(ActionEvent e){for(int i=0; i&amp;lt;6; i++)   for(int j=0; j&amp;lt;6; j++){if(e.getSource () == Fld[i][j]){ switch(e.getID ())  {case MouseEvent.MOUSE_PRESSED :	Fld[i][j].setBackground (Color.black ); break;   case MouseEvent.MOUSE_ENTERED :	Fld[i][j].setBackground (Color.gray  ); break;}}Но ничего не получается. Обрабатывается как ни в чём ни бывало только нажатие. А наезд - игнорируется.		        else Fld[i][j].setBackground (Color.white  ); Fld[i][j].repaint ();			}}</description><pubDate>Tue, 20 Feb 2001 19:22:00 GMT</pubDate><dc:creator>fimka</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>1) Пожалуйста уточните что за класс такой MyButton - он что extends Button ? 2) Определяете ли вы MouseListener и ActionListener для каждой кнопки ?3) Я очень не советую вам использовать Event model 1.0 вместе с 1.1 - результаты могут быть неопределёными..</description><pubDate>Sun, 18 Feb 2001 15:09:00 GMT</pubDate><dc:creator>vladisx</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>попробуйте заменить MouseClicked на actionRerformed(как у меня) потому что интерфейс ActionListener отвечает за все события происшедшие в нашем случае при нажатии на кнопку. И совет - начинайте использовать ActionListener для обработки кнопки вместо event(Evevnt e,Object o) потому что это немного устарело и если Вы будете компилировать Ваш код в JDK1.2.2 вместо J++ вы получите сообщение что event deprecated.</description><pubDate>Mon, 05 Feb 2001 17:31:00 GMT</pubDate><dc:creator>mishgun</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Увы Ваш пример не добавил ничего нового. Сообщения в консоль снова печатаются непосредственно в обработчике, находящемся в классе кнопки. А мне необходимо различать и обрабатывать события , происходящие с кнопкой и мышью из Апплета, причём, как я уже отмечал выше, у меня несколько кнопок.К примеру, при наезде на некоторую кнопку, я должен в Апплете просчитать какие-то величины и выдать результат на кнопку, как лейбл. А при нажатии на эту кнопку, выдать другой результат.Ваш пример, увы, не позволяет мне это проделать, так как обработка событий у Вас происходит внутри класса Кнопки. Я, наверное уже достал? Да?</description><pubDate>Sun, 04 Feb 2001 23:57:00 GMT</pubDate><dc:creator>fimka</dc:creator></item><item><title>RE: Как обработать наезд мышки на кнопку?</title><link>http://www.relib.com/forums/Topic703092-5-1.aspx</link><description>Извиняюсь. Я новичок, поэтому не корректно поставил вопрос.Я пошёл по такому пути. В классе MyButton обрабатываю события для мыши : 	this.addMouseListener	(    new MouseAdapter()	{public void mouseEntered(MouseEvent event) 		{setLabel(lbl); }public void mouseExited(MouseEvent event) 		{ setLabel(&amp;quot;&amp;quot;); 	}public void mouseClicked(MouseEvent event)		{setBackground(color);}	});Вроде бы всё хорошо. Теперь в Классе Апплет пытаюсь обработать события (У меня массив кнопок):public boolean action (Event evt, Object obj)	{	for(int i=0; i&amp;lt;6; i++)	for(int j=0; j&amp;lt;6; j++)	if(evt.target == Fld[i][j] )	  {	  Fld[i][j].setBackground (Me);			return true;          }          retyrn false;	}Однако теперь, реагирую на событие &amp;quot;Наезд&amp;quot; я не могу заставить апплет отличать его от события &amp;quot;Нажатие&amp;quot;. Если можете, помогите мне пожайлуста. Огромное Вам спасибо.</description><pubDate>Sun, 04 Feb 2001 21:48:00 GMT</pubDate><dc:creator>fimka</dc:creator></item></channel></rss>