tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von MiMi
  • 1 Beitrag von Technoblade
  • 1 Beitrag von SE
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
740
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BeKos BeKos ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    11
    Hallo!

    Ich versuche mich gerade wieder in Java einzuarbeiten und hänge gerade beim Event Management. Ich habe ein Frame geöffnet, welches mir die Bildschirmgröße anzeigt, und dies soll sich beim drücken von Escape wieder schliessen. Tut es aber nicht, es bleibt einfach offen und ich kriege es gar nicht mehr weg. Hier ist der Code:


    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
    
    public class ScrnSize extends Window implements KeyListener {
        
        public ScrnSize() {
            super(new Frame());
            setBackground(Color.black);
            setLocation(new Point(0,0));
            setSize(getToolkit().getScreenSize());
            setVisible(true);
            this.addKeyListener(this);
        }
        
        public void paint(Graphics g) {
            g.setColor(Color.red);
            g.drawString("Die Bildschirmgroesse beträgt"+getSize().width+"*"+getSize().height,10,20);
            g.drawString("Escape Drücken zum beenden!",10,40);
            
        }
        
        public void keyPressed(KeyEvent event) {
            if (event.getKeyCode() == KeyEvent.VK_ESCAPE) {
                this.setVisible(false);
                this.dispose();
                System.exit(0);
            } 
        }
     
        /* (non-Javadoc)
         * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
         */
        @Override
        public void keyReleased(KeyEvent arg0) {
            // TODO Auto-generated method stub
     
        }
     
        /* (non-Javadoc)
         * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
         */
        @Override
        public void keyTyped(KeyEvent arg0) {
            // TODO Auto-generated method stub
     
        }
    }
    Habe wirklich keinerlei erklärung, und bin für jede Hilfe dankbar.

    Gruß
    BeKos
    Geändert von BeKos (29.04.11 um 14:56 Uhr)
     

  2. #2
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Kommt er ueberhaupt in die keyPressed Methode? Wenn ja, welchen Key code hat das Event?
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  3. #3
    BeKos BeKos ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    11
    hmmm... wahrscheinlich unterliege ich da wieder einem Verständnissproblem. Ich dachte, dass die keyPressed Methde ausgeführt wird sobald der Benutzer irgendeine Taste drückt. Dabei wird der Keycode generiert und wenn er mit dem von Escape übereinstimmt sollte abgebrochen werden. So zumindest die Theorie, aber irgendwie scheint er den KeyListener einfach zu ignorieren, obwohl er ja geadded wurde.
     

  4. #4
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Hatte das Prob auch mal, hast du mal gegoogelt?
    Vielleicht hilft dir: http://forum.byte-welt.net/showthread.php?t=1483 Stichwort: KeyAdapter
    BeKos bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  5. #5
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Ich habe dein Programm mal ausgeführt und nen bisschen rumprobiert. Bei mir wurde erst nichts angezeigt, deswegen habe ich einfach mal, weil ich es so gewohnt bin die Superklasse auf JFrame geändert und schon hat es funktioniert. Sieht dann so aus:

    Code :
    1
    2
    3
    4
    5
    
    public class ScrnSize extends JFrame implements KeyListener {
        
        public ScrnSize() {
            super("KeyListenerTest");
    .......
    Geändert von Technoblade (30.04.11 um 12:11 Uhr) Grund: Fehler im Quelltext "" für einen String vergessen
    BeKos bedankt sich. 

  6. #6
    BeKos BeKos ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    11
    Besten Dank für eure Antworten. Hab jetzt mal ein Stündchen Zeit und versuche das Umzusetzen.
     

  7. #7
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Problem gelöst?
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  8. #8
    BeKos BeKos ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    11
    Zitat Zitat von Technoblade Beitrag anzeigen
    Ich habe dein Programm mal ausgeführt und nen bisschen rumprobiert. Bei mir wurde erst nichts angezeigt, deswegen habe ich einfach mal, weil ich es so gewohnt bin die Superklasse auf JFrame geändert und schon hat es funktioniert. Sieht dann so aus:

    Code :
    1
    2
    3
    4
    5
    
    public class ScrnSize extends JFrame implements KeyListener {
        
        public ScrnSize() {
            super("KeyListenerTest");
    .......
    Danke!

    Funktioniert einwandfrei mit dem JFrame. Ich habe ja mittlerweile auch verstanden, dass wenn ich das Testprogramm als Window laufen lassen will und nicht als Frame, dass ich dann den Focus auf dieses Fenster richten muss. Habe ich auch getan:

    Code :
    1
    2
    3
    
    .......   
    this.requestFocus()
    .......

    aber das scheint nicht zu klappen. In der Java API habe ich dazu auch nur die Aussage gefunden dass es in manchen Fällen einfach nicht möglich ist einem Window den Focus zu geben. Warum auch immer mit Frame funktioniert es ja. Geht es denn andersherum, dass ich bei nem Frame die Titelleiste nicht anzeigen lasse, also es quasi als Window "verkleide" ?
    Geändert von BeKos (02.05.11 um 10:15 Uhr)
     

  9. #9
    SE Tutorials.de Gastzugang
    Ja das geht und zwar mit setUndecorated(true)
    BeKos bedankt sich. 

  10. #10
    BeKos BeKos ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    11
    Danke ... jetzt hab ich alles so wie ich es wollte!
     

Ähnliche Themen

  1. KeyListener reagiert teils nicht auf die Leertaste
    Von mr12345 im Forum Java Grundlagen
    Antworten: 6
    Letzter Beitrag: 20.07.10, 09:42
  2. Antworten: 8
    Letzter Beitrag: 16.09.08, 12:50
  3. KeyListener reagiert nicht!
    Von Pichel im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.09.08, 14:14
  4. KeyListener reagiert nicht
    Von Isolated im Forum Java
    Antworten: 9
    Letzter Beitrag: 08.03.07, 21:24
  5. KeyListener funktioniert auf Os X nicht
    Von vaporizer im Forum Java
    Antworten: 2
    Letzter Beitrag: 16.06.04, 01:24