Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Срочно нужна помощь, программа не реагирует на нажатия клавиш:((  (Прочитано 10826 раз)
0 Пользователей и 1 Гость смотрят эту тему.
I need Help
Гость
« : 13-05-2009 09:07 » 

 А черт его знает... Помогите тупому ребенку, скажите что в программе не так, пожааа...луйста

package duk5;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import java.awt.image.ImageObserver;
import java.lang.Math.*;


/**
 * Animated gif with a transparent background.
 */
public class DukeAnim extends AnimatingSurface implements ImageObserver, KeyListener {

    private static Image agif, polochka, fon;
    private static int aw, ah, cw;
    private int x, i;
    private float n;
    public int z, z2;
    private JButton b;
    short y[] = new short [5];
    short x2[] = new short [5];



    public DukeAnim() {
        setBackground(Color.WHITE);
        fon = getImage("fon2.gif");
        agif = getImage("duke.running.gif");
        polochka = getImage("polochka.gif");
        aw = agif.getWidth(this);
        ah = agif.getHeight(this);
        cw = fon.getHeight(this);
        dontThread = true;
    }


    public void reset(int w, int h) {
        b = ((Panel) getParent()).tools.startStopB;
        for (n=0; n<=5; n++)
        {x2 = (short) (Math.random() * 500);
         y = (short) (Math.random() * 400);
        }
             
    }


    public void step(int w, int h) { }

     
   

    public void render (int w, int h, Graphics2D g2) {
       g2.drawImage(fon, 0, 0, this);
       z=150;
       

       addKeyListener(new KeyListener() {
           public void actionPerformed(ActionEvent ae){
               z=150;
               }
           public void keyPressed(KeyEvent e) {
               if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                   z+=20;
                   repaint();}
               if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                   z-=20;
                   repaint();}
           }

            public void keyTyped(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void keyReleased(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

       });
     

       for (i=0; i<=4; i++) {
            for (n=1; n<100; n+=0.5) {
               if (z<=x2*n+50 && z>=x2*n-50) {
         if (2*x>=y*n-70)
       { x+=5;
           g2.drawImage(agif, z,(int) (y*n - 70 - x), this);
           z=-200;
       }
        }
        }
        }
       
       
       x+=5;
       g2.drawImage(agif, z, x, this);
       

       y[0] = 500;
       y[1] = 1200;
       y[2] = 1300;
       y[3] = 1500;
       y[4] = 1000;
       x2[1] = 10;
       x2[2] = 50;
       x2[3] = (short) (w / 3);
       x2[4] = 100;
           
        for (n=1; n<100; n+=0.5) {
          g2.drawImage(polochka,(int) (x2[0] * n),(int) (y[0] * n - x), this);
          g2.drawImage(polochka, (int) (x2[1]* n), (int) (y[1]*n -x), this);
          g2.drawImage(polochka, (int) (x2[2]* n), (int) (y[2]*n -x), this);
          g2.drawImage(polochka, (int) (x2[3]* n), (int) (y[3]*n -x), this);
          g2.drawImage(polochka, (int) (x2[4]* n), (int) (y[4]*n -x), this);
          }

       
         
    }
       
     public boolean imageUpdate(Image img, int infoflags,
                int x, int y, int width, int height)
    {
       /* if (b.isSelected()  && (infoflags & FRAMEBITS) != 0)
            repaint();*/
        if (b.isSelected() && (infoflags & FRAMEBITS) != 0)
        repaint();
        return isShowing();

    }
     
    public static void main(String s[]) {
         createDemoFrame(new DukeAnim());
       

    }

    public void keyTyped(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyPressed(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyReleased(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

   

 
   

   

   
}

Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-05-2009 09:41 » 

а в каком месте происходит опрос клавиатуры?

Код:
package duk5;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import java.awt.image.ImageObserver;
import java.lang.Math.*;


/**
 * Animated gif with a transparent background.
 */
public class DukeAnim extends AnimatingSurface implements ImageObserver, KeyListener {

    private static Image agif, polochka, fon;
    private static int aw, ah, cw;
    private int x, i;
    private float n;
    public int z, z2;
    private JButton b;
    short y[] = new short [5];
    short x2[] = new short [5];



    public DukeAnim() {
        setBackground(Color.WHITE);
        fon = getImage("fon2.gif");
        agif = getImage("duke.running.gif");
        polochka = getImage("polochka.gif");
        aw = agif.getWidth(this);
        ah = agif.getHeight(this);
        cw = fon.getHeight(this);
        dontThread = true;
    }


    public void reset(int w, int h) {
        b = ((Panel) getParent()).tools.startStopB;
        for (n=0; n<=5; n++)
        {x2[i] = (short) (Math.random() * 500);
         y[i] = (short) (Math.random() * 400);
        }
            
    }


    public void step(int w, int h) { }

     
  

    public void render (int w, int h, Graphics2D g2) {
       g2.drawImage(fon, 0, 0, this);
       z=150;
      

       addKeyListener(new KeyListener() {
           public void actionPerformed(ActionEvent ae){
               z=150;
               }
           public void keyPressed(KeyEvent e) {
               if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                   z+=20;
                   repaint();}
               if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                   z-=20;
                   repaint();}
           }

            public void keyTyped(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void keyReleased(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

       });
     

       for (i=0; i<=4; i++) {
            for (n=1; n<100; n+=0.5) {
               if (z<=x2[i]*n+50 && z>=x2[i]*n-50) {
         if (2*x>=y[i]*n-70)
       { x+=5;
           g2.drawImage(agif, z,(int) (y[i]*n - 70 - x), this);
           z=-200;
       }
        }
        }
        }
      
      
       x+=5;
       g2.drawImage(agif, z, x, this);
       

       y[0] = 500;
       y[1] = 1200;
       y[2] = 1300;
       y[3] = 1500;
       y[4] = 1000;
       x2[1] = 10;
       x2[2] = 50;
       x2[3] = (short) (w / 3);
       x2[4] = 100;
          
        for (n=1; n<100; n+=0.5) {
          g2.drawImage(polochka,(int) (x2[0] * n),(int) (y[0] * n - x), this);
          g2.drawImage(polochka, (int) (x2[1]* n), (int) (y[1]*n -x), this);
          g2.drawImage(polochka, (int) (x2[2]* n), (int) (y[2]*n -x), this);
          g2.drawImage(polochka, (int) (x2[3]* n), (int) (y[3]*n -x), this);
          g2.drawImage(polochka, (int) (x2[4]* n), (int) (y[4]*n -x), this);
          }

       
         
    }
       
     public boolean imageUpdate(Image img, int infoflags,
                int x, int y, int width, int height)
    {
       /* if (b.isSelected()  && (infoflags & FRAMEBITS) != 0)
            repaint();*/
        if (b.isSelected() && (infoflags & FRAMEBITS) != 0)
        repaint();
        return isShowing();

    }
    
    public static void main(String s[]) {
         createDemoFrame(new DukeAnim());
       

    }

    public void keyTyped(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyPressed(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyReleased(KeyEvent arg0) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

  

 
   

   

  
}

при оформлении пользуйся тегами [code][/code]
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
I need Help
Гость
« Ответ #2 : 14-05-2009 06:40 » 

 Скромно так... мне кажется здесь

Код:
addKeyListener(new KeyListener() {
           public void actionPerformed(ActionEvent ae){
               z=150;
               }
           public void keyPressed(KeyEvent e) {
               if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                   z+=20;
                   repaint();}
               if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                   z-=20;
                   repaint();}
           }

            public void keyTyped(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void keyReleased(KeyEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

       });
Обвязал код тегом. (Serg79)
« Последнее редактирование: 14-05-2009 08:45 от Serg79 » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-05-2009 06:49 » 

I need Help, оборачивая код тегами [code]...[/code]!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #4 : 14-05-2009 12:26 » 

I need Help, я не знаток awt и swing, но мне показалось странным, что у тебя сама поверхность реализует интерфейс KeyListener, и добавляется KeyListener в методе render(). а методы интерфейса KeyListener в самой поверхности не реализованы. ты уверен, что это правильно?
Записан

Славная трава...
I need Help
Гость
« Ответ #5 : 15-05-2009 07:35 » 

 Здесь была моя ладья... если честно, несовсем, подскажи пожалуйста как их реализовать
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #6 : 15-05-2009 14:00 » 

I need Help, я сама в swing плаваю. посмотри туториал http://java.sun.com/docs/books/tutorial/uiswing/events/keylistener.html . там должно быть все понятно написано.
Записан

Славная трава...
I need Help
Гость
« Ответ #7 : 16-05-2009 07:29 » 

спасибо Да-да
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines