KeyListener reagiert nicht

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo habe vollgendes problem.
ich versuche gerade ein wenig mit swing und awt zu spielen und habe ein gesicht gezeichnet. wenn man in dem Mund klickt verfärbt sich das linke auge... also díeser MouseListener funktioniert schon mal ... jetzt wollte ich noch nen keylistener hinzufügen der wenn ich eine taste gedrückt halte und dabei in den Mund klicke soll irgendwas anderes passieren (zumbeispiel anderes auge in einer farbe) aber ich bekomme mit diesem Keylistener nichts hin. Habe viele methoden ausprobiert aber egal wie ider was ich ausprobiere ich bekomme nichts angezeigt nich net mal in einer System.out.println() den keycode oder so... WAS MACHE ICH DA FALSCH?

Ach so das die methoden net der reisser sind weiss ich ich spiele ja auch nur rum ;-)

Code:
import java.awt.*;
import javax.swing.*;
import utilities.*;
import java.awt.geom.*;
import java.awt.event.*;

public class Gesicht extends JFrame {
    
    public class GesichtselemetePanel extends JPanel{
        
         Color col1 = Color.white;
         Color col2 = Color.white;
         Color col3 = Color.white;
         
        public GesichtselemetePanel(){
            super();
            addMouseListener(new MausAktionen());
            addKeyListener(new Tastaturaction());
        } 
                 
        class MausAktionen extends MouseAdapter {
            
            public void mouseClicked ( MouseEvent e){
              geklickt(e.getX(), e.getY());
            }
            public void mouseEntered(MouseEvent e){
                setzeFarbeMund(e.getX(),e.getY());
            }
            public void mouseExit(MouseEvent e){
            setzeFarbeMund(e.getX(),e.getY());
            }
        }
        
        class Tastaturaction extends KeyAdapter{
           
               public void KeyPressed(KeyEvent e){
                    e.getKeyCode();
               }    
           
        }
        
       public void test(char a){
            if(a == 'A'){
                System.out.println(a);
            }
            
       }
        
       public void setzeFarbeMund(int x, int y){
           if(istimMund(x,y) == true){
                this.col3 = Color.YELLOW;
                this.repaint();
           }
           
       } 
        
       
        
        public void geklickt(int x, int y){
            if(istimMund(x,y)== true){
                this.col1 = Color.green;
                this.repaint();
                System.out.println("True");
                
            }
            if(istimMund(x,y)== false){
                this.col1 = Color.red;
                this.repaint();
            }
            
            System.out.println("Klick an"+ x +","+ y );
        }
        
        public boolean istimMund(int x, int y){
            if((x>30 && x< 263) && (y>120 && y<153)) {
               return true;
            }return false;
        }
        
        public void paintComponent(Graphics g){
            Graphics2D g2 = (Graphics2D) g;
            super.paintComponent(g2);
            setBackground(Color.GRAY);
            Dimension d = getSize(null);
            g2.scale(d.getWidth()/100.0 , -d.getHeight()/ 100.0);
            g2.translate(0, -100);
            
            g2.draw(new Ellipse2D.Double(55,55, 35, 35));
            g2.setColor(col2);
            g2.fill(new Ellipse2D.Double(55,55, 35, 35));
            
            g2.setColor(Color.black);
            g2.draw(new Ellipse2D.Double(10,55, 35, 35));
            g2.setColor(col1);
            g2.fill(new Ellipse2D.Double(10,55, 35, 35));
            
            g2.setColor(Color.black);
            g2.draw(new Rectangle2D.Double(10,10,80, 20));
            g2.setColor(col3);
            g2.fill(new Rectangle2D.Double(10,10,80, 20));
            
        }
        
        
    }
      
    GesichtselemetePanel gEP;
    
    /** Creates a new instance of Gesicht */
    public Gesicht(int x, int y, int w, int h) {
        super();
        this.setSize(w,h);
        this.setLocation(x,y);
        
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        gEP = new GesichtselemetePanel();
        this.setContentPane(gEP);
    
        
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        Gesicht test = new Gesicht(0,0,300,200);
        test.setVisible(true);
        // TODO code application logic here
    }
    
    
    
}


Danke schon mal für jede hilfe... . ach so wenn einer Hilft bitte erklärt es net so schwer;-)
 
B

Beni

Gast
Damit ein KeyListener angesprochen wird muss
a) Die Komponente die er abhört focusable sein (setFocusable(true))
b) Die Komponente den Fokus auch haben (mit der Maus einmal draufklicken)
 

dyrathror

Mitglied
Anonymous hat gesagt.:
... jetzt wollte ich noch nen keylistener hinzufügen der wenn ich eine taste gedrückt halte und dabei in den Mund klicke soll irgendwas anderes passieren ...

Hi,

schon mal überlegt, das dies auch ein MouseEvent ist?
Die Events kommen immer schön der Reihe nach, es kann ja nicht gleichzeitig ein
MouseEvent und ein KeyEvent von Deinem Programm verarbeitet werden.

Wirf einfach mal einen Blick auf die Oberklasse InputEvent da siehst Du dann z.B.
Methoden die Modifier wie den ALT Key abfragen, die auch mit dem MouseEvent
mitkommen.

Gruß
Stephan
 

Thammi

Aktives Mitglied
Hi,
ich habe so ziemlich das gleiche Problem.

Ich habe geau wie der Gast einen KeyListener an den Frame angelegt. Die Frage ist ja jetzt eigentlich: Wenn z.B. ein Button in diesem Frame den Fokus hat, wird das Event dann auch dem JFrame übergeben?
Ich habe übrigens keinen MouseListener eingebaut.

Wäre echt nett wenn ihr uns weiterhelfen könntet.
 
G

Guest

Gast
Beni hat gesagt.:
Damit ein KeyListener angesprochen wird muss
a) Die Komponente die er abhört focusable sein (setFocusable(true))
b) Die Komponente den Fokus auch haben (mit der Maus einmal draufklicken)


ok an welche stelle kommt die setFokusable?
 

Thammi

Aktives Mitglied
Wenn du das ganze Zeug mit Fokus umgehen willst musst du nur den 'AWTEventListener' benutzen. Er nimmt die Events von allen AWT/Swing Komponenten an. Man kann ihn mit 'Toolkit.getDefaultToolkit( AWTEventListener ).addAWTEventListener()' setzen.
 
G

Gast

Gast
ja aber an welcher stelle im code habe ich es jetzt falsche gemacht? Listener soll ich diese nehmen soweit ich das verstanden habe... der mouse wie gesagt klappt ja auch bloss eben Key net...
 

dyrathror

Mitglied
Innerhalb eines MouseListeners, sprich mit dem MouseEvent, kommen nur MetaKey Informationen (CTRL, SHIFT, ALT) mit.
Diese können über die sogenannten Modifier abgefragt werden, z.B. so:
Code:
if ((event.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0)
wenn Du wissen willst ob die CTRL-Taste gedrückte gehalten wurdes während des MouseClicks.

Einen KeyListener kannst Du hierbei nur in dem Sinne verwenden, als das Du vor dem MouseClick
eine Taste drückst, Dir diese Taste merkst und dann in der EventMethode des MouseListeners die
zuletzt gedrückte Taste mit berücksichtigst.
 
G

Guest

Gast
aha ich probiere es mal... ich soll schauen ob bei dem klick die shift taste unten ist...
 
G

Gast

Gast
So das mit dem isShiftDown hat geklappt;-) danke danke danke ..

jetzt mein letztes problem... die MouseMoved() soll eigentlich endscheiden ob die farbe vom meine rechteck neu gesetzt werden soll ( aber nur dann wenn ich mit der maus drauf bin)
Aber es klappt net.. wenn ihr mir noch einmal helfen könntent falle ich auf die knie und gebe jeden hier nen runde pils aus;-)
 
G

Guest

Gast
ach so der neue quelltext;-) sorry
:

Code:
import java.awt.*;
import javax.swing.*;
import utilities.*;
import java.awt.geom.*;
import java.awt.event.*;

public class Gesicht extends JFrame {
    
    public class GesichtselemetePanel extends JPanel{
        
         Color col1 = Color.white;
         Color col2 = Color.white;
         Color col3 = Color.white;
         
        public GesichtselemetePanel(){
            super();
            addMouseListener(new MausAktionen());
                    
        }
                 
        class MausAktionen extends MouseAdapter implements MouseMotionListener{
            
            public void mouseClicked ( MouseEvent e){
              geklickt(e.getX(), e.getY(), e);
            }
            
            public void mouseDragged(MouseEvent e) {
            }
            
            public void mouseMoved(MouseEvent e) {
                setzeFarbeMund(e.getX(), e.getY());
            }
            
        }
        
        
        
       public void setzeFarbeMund(int x, int y){
           if(istimMund(x,y) == true){
                this.col3 = Color.YELLOW;
                this.repaint();
                
                
           }
           if(istimMund(x,y) == false){
                this.col3 = Color.white;
                this.repaint();
                
                
           }
           
       } 
        
       
        
        public void geklickt(int x, int y,MouseEvent e){
            
             if((istimMund(x,y)== true) && (e.isShiftDown() == true)){
                this.col1 = Color.ORANGE;
                this.repaint();
                System.out.println("True im mund und shift");
                }
             if(istimMund(x,y)== true&& (e.isShiftDown() != true)){
                this.col1 = Color.green;
                this.repaint();
                System.out.println("True");
                }
            if(istimMund(x,y)== false){
                this.col1 = Color.red;
                this.repaint();
            }
            
            
            
            System.out.println("KLick an"+ x +","+ y );
        }
        
        public boolean istimMund(int x, int y){
            if((x>30 && x< 263) && (y>120 && y<153)){
              
               return true;
			}return false;
        }
        
        public void paintComponent(Graphics g){
            Graphics2D g2 = (Graphics2D) g;
            super.paintComponent(g2);
            setBackground(Color.GRAY);
            Dimension d = getSize(null);
            g2.scale(d.getWidth()/100.0 , -d.getHeight()/ 100.0);
            g2.translate(0, -100);
            
            g2.draw(new Ellipse2D.Double(55,55, 35, 35));
            g2.setColor(col2);
            g2.fill(new Ellipse2D.Double(55,55, 35, 35));
            
            g2.setColor(Color.black);
            g2.draw(new Ellipse2D.Double(10,55, 35, 35));
            g2.setColor(col1);
            g2.fill(new Ellipse2D.Double(10,55, 35, 35));
            
            g2.setColor(Color.black);
            g2.draw(new Rectangle2D.Double(10,10,80, 20));
            g2.setColor(col3);
            g2.fill(new Rectangle2D.Double(10,10,80, 20));
            
        }
        
        
    }
    
    
    
    GesichtselemetePanel gEP;
    
    /** Creates a new instance of Gesicht */
    public Gesicht(int x, int y, int w, int h) {
        super();
        this.setSize(w,h);
        this.setLocation(x,y);
        
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        gEP = new GesichtselemetePanel();
        this.setContentPane(gEP);
        
        
        
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        Gesicht test = new Gesicht(0,0,300,200);
        test.setVisible(true);
        // TODO code application logic here
    }
    
    
    
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
A Keylistener reagiert nicht AWT, Swing, JavaFX & SWT 10
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A JButton reagiert nicht auf KeyListener//Focuslistener AWT, Swing, JavaFX & SWT 4
T KeyListener reagiert seltsam bei F10 (Systemtasten?) AWT, Swing, JavaFX & SWT 5
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben