Portal > Foren > Java > Allgemeine Java-Programmierung > Probleme mit KeyListener
Antwort
 
Themen-Optionen
Alt 26.03.2006, 10:45 Nach oben    #1
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard Probleme mit KeyListener

hi,
ich hab mal wieder paar probleme. Diesmal sieht es so aus, dass ich ein JPanel habe, bei dem ich abfragen will, ob eine Taste gedrückt wird. Dachte ich, kann ja nicht schwer sein... von wegen. Zwar bemerkt mein panel, dass sich die Maus über ihm bewegt hat, aber nicht, dass ich eine Taste gedrückt habe...

PHP-Code:
package designer.gui;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;
import map.Map;

@
SuppressWarnings("serial")
public class 
MapPanel extends JPanel implements MouseListenerMouseMotionListenerKeyListener{
    private 
BufferedImage dbImage;
    private 
Graphics dbg;
    private 
Map m;
    private 
int mXmY;
    private 
int mapX 0mapY 0;
    
    public 
MapPanel(Map m){
        
this.m;
        
setBackground(Color.black);
        
addKeyListener(this);
        
addMouseListener(this);
        
addMouseMotionListener(this);
    }
    
    public 
void paintComponent(Graphics g){
        if (
dbImage == null){
            
dbImage = new BufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_RGB);
            
dbg dbImage.getGraphics ();
        }if(
dbImage.getWidth() != getWidth() || dbImage.getHeight() != getHeight()){
            
dbImage = new BufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_RGB);
            
dbg dbImage.getGraphics ();
        }
        
dbg.setColor(getBackground());
        
dbg.fillRect(getX(), getY(), this.getWidth(), this.getHeight());
        
dbg.setColor(getForeground());
        
m.render((Graphics2D)dbg,getX() + mapX,getY() + mapY,getWidth(),getHeight());
        
g.drawImage(dbImagegetX(), getY(), this);
        
g.setColor(Color.green);
        
g.drawRect(mX,mY,32,32);
    }
    public 
void mouseClicked(MouseEvent e) {
        
setMouse(e);
    }

    public 
void mousePressed(MouseEvent e) {
        
setMouse(e);
    }

    public 
void mouseReleased(MouseEvent e) {
    }

    public 
void mouseEntered(MouseEvent e) {
    }

    public 
void mouseExited(MouseEvent e) {
    }

    public 
void mouseDragged(MouseEvent e) {
        
setMouse(e);
    }

    public 
void mouseMoved(MouseEvent e) {
        
setMouse(e);
    }
    
    private 
void setMouse(MouseEvent e){
        
mX = (int)((e.getX())/32)*32;
        
mY = (int)((e.getY())/32)*32;
        
repaint();
    }

    public 
void keyTyped(KeyEvent e) {    
        
System.out.println(e);
    }

    public 
void keyPressed(KeyEvent e) {
        if(
e.getKeyCode() == KeyEvent.VK_UP){
            
mapY-=32;
        }if(
e.getKeyCode() == KeyEvent.VK_DOWN){
            
mapY+=32;
        }if(
e.getKeyCode() == KeyEvent.VK_LEFT){
            
mapX-=32;
        }if(
e.getKeyCode() == KeyEvent.VK_RIGHT){
            
mapX+=32;
        }
        
System.out.println(e);
    }

    public 
void keyReleased(KeyEvent e) {
        
System.out.println(e);
    }

ich versteh aber nicht warum.
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 12:20 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Ohne das genau zu wissen: Vllt. kann eine Komponete nur dann KeyEvents empfangen, wenn sie den Focus hat.

D.h. in deinen Mouse-Methoden solltest du "requestFocus();" aufrufen. Kann ich dir aber nicht garantieren.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 12:30 Nach oben    #3
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

Vielen dank für die schnelle (und richtige) antwort!
jetzt gehts
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 18:50 Nach oben    #4
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

wenn wir schon beim focus sind, wie bekomme ich raus, ob jemand den focus hat?? mit isFocusOwner()???
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.03.2006, 19:05 Nach oben    #5
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Japp.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit Strato / Arcor? MrNiceGuy Plauderecke 15 28.12.2006 23:35
Caching mittels dbm-Dateien, Probleme mit dba_popen() Ben PHP-Programmierung 4 27.07.2006 13:23
Layout Probleme VipViper2000 Desktop-Applikationen und Grafik 8 13.09.2005 22:35
Probleme mit dem KeyListener VipViper2000 Allgemeine Java-Programmierung 2 04.07.2005 03:04
JTable mit Keylistener füllen! Java_Newbie Allgemeine Java-Programmierung 2 13.06.2005 15:26


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:38 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44