Tastaturabfrage

Status
Nicht offen für weitere Antworten.

GsG9GaG

Mitglied
Also ich habe folgenden Code (ein Teil des Gesamten):

Code:
public class test2 extends Applet implements Runnable, KeyListener, MouseListener
 { 
  String schreibe="OIOIOIOIOI";
 
  public void init() 
   { 
    addKeyListener(this);
    addMouseListener(this);
   }

  public void paint(Graphics g)
   {
    g.drawString(schreibe,20,450);
   }

  public void keyPressed(KeyEvent e)
   {
    schreibe="aaa";
    repaint();
   }
  public void keyReleased(KeyEvent e)
   {
   }
  public void keyTyped(KeyEvent e)
   {
   }
 }
später kommen noch die ganzen sachen wie mousepressed! Die Mouse funzt auch...aber wenn ich ne Taste drücke, wird der String nicht zu aaa geändert, auch wenn ich es extra nochmal repainte! Irgendwie ruft der keyPressed nicht auf, wenn ich die ne Taste drücke!

Bitte um hilfe!
 

GsG9GaG

Mitglied
hab jezz mal alles rausgepackt und nur den keylistener getestet...und siehe da, es geht! Aber wieso nicht im meinem Programm...ich bin echt am verzweifeln! Ich versteh es nicht...kann es sein, das der keylistener mit etwas anderem probleme kriegt???

bitte helfen
 

GsG9GaG

Mitglied
nach mehrmaligem testen liegt das wohl an einem canvas, was ich eingebaut habe...hier ein teil des codes (unwichtiges wurde weggelassen):

Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.Canvas.*;
import java.applet.*;

public class test2 extends Applet implements Runnable, KeyListener, MouseListener 
{   
  class b_mlistener extends MouseAdapter
   {
    String welcherbutton;
    b_canvas welchercan;
    public b_mlistener(String button, b_canvas can)
     {
      welcherbutton = button;
      welchercan = can;
     }
    public void mouseClicked(MouseEvent e)
     {
     }
    public void mouseEntered(MouseEvent e)
     {
      welchercan.in();      
     }
    public void mouseExited(MouseEvent e)
     {
      welchercan.out();    
     }
    public void mousePressed(MouseEvent e)
     {
      welchercan.down();
     }
    public void mouseReleased(MouseEvent e)
     {
      welchercan.in();
      if(spielflaeche == welcherbutton)
       {
        spielflaeche = "Spiel";
       }
      else
       {
        spielflaeche = welcherbutton;
       }
      repaint();
     }
   }  

  class b_canvas extends java.awt.Canvas
   { 
    String welcherbutton = "b_1";
    Image welchesbild1;
    Image welchesbild2;
    Image welchesbild3;
    public b_canvas(Image bild1,Image bild2,Image bild3)
     { 
      welchesbild1 = bild1;
      welchesbild2 = bild2;
      welchesbild3 = bild3;
     } 
    public void paint(Graphics g)
     {
      if(welcherbutton=="b_1")
       {
        g.drawImage(welchesbild1,0,0,this);       
       }
      if(welcherbutton=="b_2")
       {
        g.drawImage(welchesbild2,0,0,this);
       } 
      if(welcherbutton=="b_3")
       {
        g.drawImage(welchesbild3,0,0,this);
       }         
     }
    public void in()
     {
      welcherbutton = "b_2";
      repaint();
     }
    public void out()
     {
      welcherbutton = "b_1";
      repaint();
     }  
    public void down()
     {
      welcherbutton = "b_3";
      repaint();
     } 
   }
  String schreibe="OIOIOIOIOI";
  String schreibe1="";
  String schreibe2="";
  String schreibe3=""; 

   // Bilder für die Menüfläche  
  Image buffermenue;
  Image menue;
  Image b_Charakter1;
  Image b_Charakter2;
  Image b_Charakter3;
  b_canvas b_charaktercanvas;
  int b_CharakterX=12;
  int b_CharakterY=10;
  Image b_Optionen1;
  Image b_Optionen2;
  Image b_Optionen3;
  b_canvas b_optionencanvas;
  int b_OptionenX=169;
  int b_OptionenY=52;
  Image b_Magie1;
  Image b_Magie2;
  Image b_Magie3;
  b_canvas b_magiecanvas;
  int b_MagieX=169;
  int b_MagieY=10;
  Image b_Inventar1;
  Image b_Inventar2;
  Image b_Inventar3;
  b_canvas b_inventarcanvas;
  int b_InventarX=12;
  int b_InventarY=52;


  // Für die Mausabfragen
  int mausX;
  int mausY;


  MediaTracker tracker;


  String vers;

  public void init() 
   { 
    addMouseListener(this);
    addKeyListener(this);
    b_optionencanvas = new b_canvas(b_Optionen1,b_Optionen2,b_Optionen3);
    add(b_optionencanvas);





   } 



public void paint(Graphics g)   
{    
g.drawString(schreibe,20,450);
g.drawString("13",20,50);    
} 

  public void run()
   {
 
} 

public void keyPressed(KeyEvent e)   
{    
schreibe="aaa";    
repaint();   
}  

public void keyReleased(KeyEvent e)   {   }  
public void keyTyped(KeyEvent e)   {   } 
  public void mouseReleased(MouseEvent e) 
   {
    if((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)
     {
      line="null";
     }       
   }

  public void mouseClicked(MouseEvent e) {}
  public void mouseEntered(MouseEvent e) {}
  public void mouseExited(MouseEvent e) {}
  public void mousePressed(MouseEvent e)
   {
    mausX = e.getX(); 
    mausY = e.getY();
    int steigung = (mausY - mittelpunktY)/(mausX - mittelpunktX);
    if((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
     {
      if(mausY > 500)
       {
        // Menüfläche linke maustaste
       }
      else
       {
        // Spielfläche linke maustaste
       } 
     }
    else
     {
      if((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0)
       {
        if(mausY < 500)
         {
          // Spielfläche rechte maustaste
          if(mausX > mittelpunktX)
           {
            if(steigung >= 2.4)
             {
	      //Unten
	      line="unten";
     	     }
            if(steigung < 2.4 & steigung >= 0.4)
             {
	      //untenrechts
	      line="unterechts";
             }
            if(steigung < 0.4 &  steigung >= -0.4)
             {
	      //rechts
	      line="rechts";
             }
            if(steigung < -0.4 & steigung >= -2.4)
             {
	      //obenrechts
	      line="obenrechts";
             }
            if(steigung < -2.4)
             {
              //oben
	      line="oben";
             }
           }
          else
           {
            if(steigung >= 2.4)
             {
	      //oben
	      line="oben";
             }
            if(steigung < 2.4 & steigung >= 0.4)
             {
	      //obenlinks
	      line="obenlinks";
             }
            if(steigung < 0.4 &  steigung >= -0.4)
             {
	      //links
	      line="links";
             }
            if(steigung < -0.4 & steigung >= -2.4)
             {
	      //untenlinks
	      line="untenlinks";
             }
            if(steigung < -2.4)
             {
              //unten
	      line="unten";
             }
           }
         } 
       }
     }
   }
}

so, wenn ich diese zeile " add(b_optionencanvas);" weglasse, geht es wieder...hab mal im i-net gesucht und nur was von wegen focus gefunden! Aber das was da stand hat nicht geklappt...wär hat ne idee???
 
B

Beni

Gast
Was stand denn dort?

Normalerweise hilft es, zuerst den Focus möglich zu machen (setFocusable( true )), und dann noch mit der Maus draufklicken (damit der Fokus auch gesetzt wird).
 

GsG9GaG

Mitglied
hab die seite leider nicht mehr, da stand aber...sowas in der art...das ich nach dem erzeugen des canvas den focus wieder auf das applet setzten soll (bei denen in der main methode) und das mit hilfe von "requestFocusInWindow();"

aber egal wie ich es mache...es funzt nicht! Weiß jemand rat?
 

GsG9GaG

Mitglied
so, hab das prob gelöst...dank eines anderen beitrags in diesem forum (den musste man ersma finden)...das requestfocus war an der falsche stelle...jezz funzt es ersma!

Aber danke an meine hilfe in diesem Thread!

Tschööö
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben