tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
240
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Developer_Y Developer_Y ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    59
    Hi, ihr kennt doch die folgenden drei voids der Klasse "KeyListener"
    Code :
    1
    2
    3
    
    keyreleased   
    reypressed
    keytyped
    ICh weiß nur wie man sagen kann, was passieren soll, wenn man eine Taste drückt, kann mir aber einer sagen, wie man angeben kann, dass etwas passieren soll wenn mehrer Tasten z,B. 2 gleichzeitig gedrückt werden?
    Code :
    1
    2
    3
    4
    5
    
      
    public void keyPressed(KeyEvent e) 
            { 
               if (e.getKeyChar()=='d') {/*hier die Aktion*/} 
            }
    z.B. d und g
    dass zum beispiel die Aktion System.exit passieren soll
    danke schon mal im Voraus für eure Hilfe
     

  2. #2
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Code java:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
    package core;
     
    import java.awt.Container;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    public class KeyDingsda extends Container implements KeyListener, Runnable
    {
        private static final long serialVersionUID = 1L;
     
        private boolean key_d_pressed;
        private boolean key_g_pressed;
        
        public KeyDingsda()
        {
            super();
            
            this.key_d_pressed = false;
            this.key_g_pressed = false;
            
            this.addKeyListener(this);
        }
        public void run()
        {
            while(true)
            {
                if(this.key_d_pressed && this.key_g_pressed)
                    System.exit(0);
                this.warte(10l);
            }
        }   
        public void keyPressed(KeyEvent e)
        {
            switch(e.getKeyCode())
            {
                case(KeyEvent.VK_D):
                    this.key_d_pressed = true;
                    return;
                case(KeyEvent.VK_G):
                    this.key_g_pressed = true;
                    return;
            }
        }
        public void keyReleased(KeyEvent e)
        {
            switch(e.getKeyCode())
            {
                case(KeyEvent.VK_D):
                    this.key_d_pressed = false;
                    return;
                case(KeyEvent.VK_G):
                    this.key_g_pressed = false;
                    return;
            }
        }
        public void keyTyped(KeyEvent arg0){}
        
        private void warte(long l)
        {
            try
            {
                Thread.sleep(l);
            }
            catch(Throwable e)
            {
                e.printStackTrace();
            }
        }
    }
     

  3. #3
    Developer_Y Developer_Y ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    59
    danke man das war ne super lösung
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Key Kompinationen-rayman3.jpg  
     

  4. #4
    Developer_Y Developer_Y ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    59
    oh sorry. falscher code der hier is es:
    Code :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    import java.awt.Container;
    import java.awt.Frame;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener; 
    public class KeyDingsda extends Container implements KeyListener, Runnable
    {  
        private static final long serialVersionUID = 1L;  
        private boolean key_d_pressed;   
        private boolean key_g_pressed;   
        public KeyDingsda() 
        {       
            super();       
            this.key_d_pressed = false;
            this.key_g_pressed = false;      
            this.addKeyListener(this);  
            }    
        public void run()  
        {     
            while(true) 
            {        
                if(this.key_d_pressed && this.key_g_pressed)  
                    System.exit(0);    
                this.warte(10l);     
                }  
            }    
        public void keyPressed(KeyEvent e)  
        {    
            switch(e.getKeyCode())      
            {        
            case(KeyEvent.VK_D):    
                this.key_d_pressed = true;      
            return;         
            case(KeyEvent.VK_G):          
                this.key_g_pressed = true; 
            return;   
            }  
            }  
        public void keyReleased(KeyEvent e) 
        {           
            switch(e.getKeyCode())      
            {        
            case(KeyEvent.VK_D):     
                this.key_d_pressed = false;     
            return;         
            case(KeyEvent.VK_G):        
                this.key_g_pressed = false;        
           return;      
           }  
            }  
        public void keyTyped(KeyEvent arg0){}  
        
        private void warte(long l)   
        {    
            try       
            {        
                Thread.sleep(l);      
                }   
            catch(Throwable e)   
            {         
                e.printStackTrace();  
                }  
            }
        public static void main(String []args)
        {
            Frame frame = new Frame();
            frame.setVisible(true);
        }
        }
     

  5. #5
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Du musst den Container noch zu Frame hinzufügen, und dafür sorgen das er dem Focus hat.
    Außerdem würde ich dir empfehlen den KeyListener direkt an das Frame zu heften (beseitigt das Focus-Problem), und der Container-Klasse immer mitzuteilen welche Taste gedrückt wurde.
    Am einfachsten im KeyListener/Frame dann die Event-Variable an eine public Method die so aussieht wie keyPressed bzw. keyReleased weiterleiten.

    Aber du codest doch 3D, oder? In den Fall verwendet man doch eher SimpleUniverse's und KeyBehavior, oder? Habe ich zumindest mal gelesen, bin schon bei der Steuerung der Cam gescheitert.
     

  6. #6
    Developer_Y Developer_Y ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    59
    ja noch ma hi, ja, ich code 3D
    und wie du sehen kannst, das bild habe ich selbst mit JAva3D erstellt
    naja egal, das mit Container, dass kommt mir ein Bisschen bekannt vor, in Java3D
    aber es geht wahrscheinlich net, schade aber egal, trotzdem nochmal vielen Dank.
    PS:
    Hast du Interesse an der 3D Programmierung /3D SpieleProgrammierung?
     

  7. #7
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Doch, tut es, man muss nur wissen wie man es einbindet. ^^

    Code java:
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    
    package core;
     
    import javax.swing.JFrame;
     
    public class Main extends JFrame
    {
        private static final long serialVersionUID = 1L;
     
        public Main()
        {
            super();
            
            this.setSize(80, 60);
            this.setVisible(true);
            
            KeyDingsda keydingsda = new KeyDingsda();       
            new Thread(keydingsda, "KeyDingsda").start();   
            this.addKeyListener(keydingsda);
        }
        public static void main(String[] args)
        {
            new Main();
        }
    }
    ////////////////////////////////////////////
    package core;
     
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    public class KeyDingsda extends Object implements KeyListener, Runnable
    {
        private static final long serialVersionUID = 1L;
     
        private boolean key_d_pressed;
        private boolean key_g_pressed;
        
        public KeyDingsda()
        {
            super();
            
            this.key_d_pressed = false;
            this.key_g_pressed = false;
        }
        public void run()
        {
            while(true)
            {
                if(this.key_d_pressed && this.key_g_pressed)
                    System.exit(0);
                this.warte(10l);
            }
        }   
        public void keyPressed(KeyEvent e)
        {
            switch(e.getKeyCode())
            {
                case(KeyEvent.VK_D):
                    this.key_d_pressed = true;
                    return;
                case(KeyEvent.VK_G):
                    this.key_g_pressed = true;
                    return;
            }
        }
        public void keyReleased(KeyEvent e)
        {
            switch(e.getKeyCode())
            {
                case(KeyEvent.VK_D):
                    this.key_d_pressed = false;
                    return;
                case(KeyEvent.VK_G):
                    this.key_g_pressed = false;
                    return;
            }
        }
        public void keyTyped(KeyEvent arg0){}
        
        private void warte(long l)
        {
            try
            {
                Thread.sleep(l);
            }
            catch(Throwable e)
            {
                e.printStackTrace();
            }
        }
    }

    Das Frame registriert nun die andere Klasse als KeyListener (so hätte ich es am Anfang machen sollen, hab aber meine Gedanken grad in nen anderen Projekt stecken) und startet die andere Klasse als Thread, die die Tasten dann überprüft.
    Funktioniert bei mir jetzt tadellos. (Kann mir bitte wer erklären wer auf die Idee kommt "F u n s t" zu zensieren?)

    Bild sieht nicht schlecht aus.
    In Java3D kommen ja auch relativ viele Klassen vor, die mehr oder weniger bekannte Namen haben. (wie z. B. Canvas3D)

    Ja, habe eigendlich Interesse, aber kann selbst nur (zumindest relativ gut) Java und PHP. Und bei Java3D habe ich nur kapiert das man ein Canvas3D aus der Grafikeinstellung erstellt, daran ein SimpleUniverse hängt und per SimpleUniverse.getViewingPlatform.setNominalPlatform() oder so ähnlich die Kamera positioniert. Sobald ich mir vornehme etwas zu lernen und zu den Transform3D, TransformGroup usw. komme schaltet sich mein Gehirn ab.
     

  8. #8
    Developer_Y Developer_Y ist offline Mitglied Silber
    Registriert seit
    Jan 2009
    Beiträge
    59
    NUr mal so, du beschäftigst dich bestimmt drei dimensional usw.
    füg einfach immer so einen speziellen code ein, den du nicht verstehen musst, dann lasse der Welt freien lauf!
     

  9. #9
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Auf die Idee bin ich auch mal gekommen. Habe mir einfach eine Klasse zusammengeschnipselt, bei der man mit ein paar Methoden die Kamera komplett steuern konnte.
    Aber ich weiß nicht ob die Idee es so zu machen wirklich so optimal ist.

    t das oben nun?
     

  10. #10
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Ich möchte euch beide Bitten in diesem Forum auf eure Wortwahl und die Rechtschreibung zu achten!