// /* * GammaButton.java * Version 1.0.0 * Written by Elijah Dean Meeker 1/4/96 * elijah@bga.com * http://www.realtime.net/~elijah/ */ import java.awt.Graphics; import java.awt.Event; import java.awt.Image; import java.awt.MediaTracker; import java.net.URL; import java.net.MalformedURLException; import java.lang.InterruptedException; import java.applet.Applet; public class GammaButton extends java.applet.Applet{ private MediaTracker tracker; private Image img[] = new Image[3]; private boolean onButt = false; // ¸¶¿ì½º°¡ ¹öÆ° ³»ºÎ¿¡ µé¾î¿À¸é true private boolean pressedButt = false; // ¹öÆ°ÀÌ ´­·ÁÁö¸é true private boolean three_img = true; // 3-»óÅÂÀÎÁö 2-»óÅÂÀÎÁö ¾Ë¸®´Â º¯¼ö. ÃʱⰪÀº 3-»óÅÂ. private int onIs = 0; // À̹ÌÁö ÃʱⰪÀº º¸Åë »óÅÂÀÇ ¹öÆ° À̹ÌÁö private URL clickDest; // dest ½ºÆ®¸µÀ» URL·Î ¹Ù²Û °Í private String dest; // À̵¿ÇÒ ´ë»ó URL ½ºÆ®¸µ public void init(){ String istr; tracker = new MediaTracker(this); // ÀÌ ¾ÖÇø´ÀÇ MediaTracker »ý¼º. for (int i = 0; i < 3; i++) { // º¯¼ö image0, image1, image2¸¦ HTML¹®¼­¿¡¼­ Àд´Ù. istr = getParameter("image"+i); if (istr == null){ // À̹ÌÁö º¯¼ö°¡ Çϳª¶óµµ ¾øÀ¸¸é 3-»óÅ°¡ ¾Æ´Ï´Ù. three_img = false; }else{ // À̹ÌÁö¸¦ Àоîµé¿© ¹Ìµð¾îÆ®·¡Ä¿¿¡ µî·ÏÇÑ´Ù. img[i] = getImage(getCodeBase(),istr); tracker.addImage(img[i], 0); try { tracker.waitForAll(); // ¹Ìµð¾îÆ®·¡Ä¿¿¡ µî·ÏµÈ ¸ðµç À̹ÌÁö¸¦ ÀоîµéÀ̱⠽ÃÀÛÇÑ´Ù. } catch (InterruptedException e) { System.out.println("Error waiting for image"+i+" to load"); } } } dest = getParameter("dest"); // ¹öÆ°ÀÌ ´­·ÁÁú ¶§ À̵¿ÇÒ ¸ñÀû URLÀ» ÀоîµéÀδÙ. try{ clickDest = new URL(dest); // ½ºÆ®¸µÀ» URL·Î ¹Ù²Û´Ù. }catch(MalformedURLException mal){ System.out.println("Malformed URL: Check Applet Tag."); } } // end init public void start(){ repaint(); // update()¸¦ È£ÃâÇÑ´Ù. } // end start public void stop(){ }//end stop public void destroy(){ }//end destroy // À̺¥Æ® Çڵ鷯µé public boolean mouseDown(Event e, int x, int y){ pressedButt = true; // ¹öÆ°ÀÌ ´­·ÁÁö¸é pressedButt Çʵ带 true·Î ÇÏ°í repaint(); // ´Ù½Ã update()¸¦ È£Ãâ return(true); }//end mouseDown public boolean mouseUp(Event e, int x, int y){ if (pressedButt && onButt){ // ¹öÆ°ÀÌ ´­·ÁÁ³´Ù°¡ ¹öÆ° ¾È¿¡¼­ ¸¶¿ì½º°¡ ³õ¿©Áö¸é pressedButt = false; // pressedButt Çʵ带 false·Î ÇÏ°í repaint(); // ´Ù½Ã update()¸¦ È£ÃâÇÑ ´ÙÀ½, getAppletContext().showDocument(clickDest); // ¸ñÀû URL·Î À̵¿ÇÑ´Ù. } else { // ¸¶¿ì½º¸¦ ¹öÆ° ¹Û¿¡¼­ ´­·¶´Ù°¡ ¾È¿¡¼­ ³õ°Å³ª, //¹öÆ°À» ´­·¶´Ù°¡ ¹öÆ° ¹Û¿¡¼­ ¸¶¿ì½º¸¦ ³õÀº °æ¿ì pressedButt = false; repaint(); // ´Ù½Ã update() È£Ãâ } return(true); }//end mouseUp public boolean mouseEnter(Event e, int x, int y){ onButt = true; // ¸¶¿ì½º°¡ ¾ÖÇø´(¹öÆ°) ¾È¿¡ µé¾î¿À¸é onButt Çʵ带 true·Î ÇÏ°í showStatus(dest); // ¸ñÀû URLÀ» ºê¶ó¿ìÀúÀÇ »óÅ ¹Ù¿¡ ³ªÅ¸³½´Ù. repaint(); // update() È£Ãâ return(true); }//end mouseEnter public boolean mouseExit(Event e, int x, int y){ onButt = false; // ¸¶¿ì½º°¡ ¾ÖÇø´(¹öÆ°) ¹ÛÀ¸·Î ³ª°¡¸é onButt Çʵ带 false·Î ÇÏ°í showStatus(""); // »óÅ ¹Ù¿¡ ³ªÅ¸³µ´ø ¸ñÀû URLÀ» Áö¿î´Ù. repaint(); // update() È£Ãâ return(true); }//end mouseExit // end À̺¥Æ® Çڵ鷯 public void update(Graphics g){ // repaint()¸¦ ½ÇÇàÇÏ¸é °á°úÀûÀ¸·Î update()°¡ È£ÃâµÈ´Ù. if(!onButt) // ¸¶¿ì½º°¡ ¹öÆ° ¹Û¿¡ ÀÖÀ¸¸é if(three_img){ // 3-»óÅ ¹öÆ° onIs = 0; // ÀÏ¹Ý »óÅÂÀÇ ¹öÆ° À̹ÌÁö }else{ // 2-»óÅ ¹öÆ° onIs = 1; // Up »óÅÂÀÇ ¹öÆ° À̹ÌÁö } else if (onButt && !pressedButt) // ¸¶¿ì½º°¡ ¹öÆ° ³»ºÎ¿¡ ÀÖ°í ¹öÆ°ÀÌ ´­·ÁÁöÁö ¾Ê¾ÒÀ¸¸é onIs = 1; // Up »óÅÂÀÇ ¹öÆ° À̹ÌÁö else // ¸¶¿ì½º°¡ ¹öÆ° ³»ºÎ¿¡ ÀÖ°í ¹öÆ°ÀÌ ´­·ÁÁ³À¸¸é onIs = 2; // Down »óÅÂÀÇ ¹öÆ° À̹ÌÁö paint(g); // paint() È£Ãâ }//end update public void paint(Graphics g){ g.drawImage(img[onIs], 0,0,this); // ÁöÁ¤µÈ À̹ÌÁö·Î ¹öÆ°À» ±×¸°´Ù. }//end paint }//end class GammaButton