2016-12-01 1 views
1

Ich bin neu in Java und ich arbeite an einem Teil der Benutzeroberfläche einer Musiktastatur, die Musiknoten auf einer Notenzeile anzeigen, wenn eine Taste gedrückt wird. Ich dachte, ich würde dies mit der Tastatur meines PCs und einem Schaltergehäuse innerhalb einer While-Schleife testen. Ich möchte, dass es beim Drücken einer Taste fortlaufend Notizen zeichnet und sie richtig platziert. Immer wenn ich den folgenden Code ausprobiere, wird das Programm die erste Notiz zeichnen und eine lange Liste von Fehlern auflisten. Ich bin mir ziemlich sicher, dass Repaint in dieser Situation nicht das Richtige ist, aber ich habe anscheinend eine Wand getroffen.Java Continuous Image Drawing In While Loop mit Schalter Cases

Mein aktueller Code ist hier:

public static void keyNoteTest() 
{ 
    int count = 0; 
    int nx = 175; 
    boolean quit = false; 

    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel = (JPanel) frame.getContentPane(); 
    panel.setLayout(null); 
    panel.setBackground(Color.white); 

    frame.setSize(800, 480); 
    frame.setVisible(true); 

    ImageIcon musicStaff = new ImageIcon("UI Graphics/trebleClef.jpg"); 
    JLabel mSL = new JLabel(musicStaff); 
    panel.add(mSL); 
    Dimension mSize = mSL.getPreferredSize(); 
    int msx = 75, msy = 117; 
    mSL.setBounds(msx, msy, mSize.width, mSize.height); 

    ImageIcon testNote = new ImageIcon("UI Graphics/quarter_note.jpg"); 
    JLabel tN = new JLabel(testNote); 
    Dimension size = tN.getPreferredSize(); 

    Scanner keyboard = new Scanner(System.in); 
    char c = keyboard.next().charAt(0); 

    while(quit != true) 
    { 
     switch(c) 
     { 
      case 'e': 
       panel.add(tN); 
       tN.setBounds(nx, 230, size.width, size.height); 
       break; 
      case 'g': 
       panel.add(tN); 
       tN.setBounds(nx, 215, size.width, size.height); 
       break; 
      case 'b': 
       panel.add(tN); 
       tN.setBounds(nx, 200, size.width, size.height); 
       break; 
      case 'd': 
       panel.add(tN); 
       tN.setBounds(nx, 185, size.width, size.height); 
       break; 
      case 'f': 
       panel.add(tN); 
       tN.setBounds(nx, 170, size.width, size.height); 
       break; 
      case 'v': 
       panel.add(tN); 
       tN.setBounds(nx, 223, size.width, size.height); 
       break; 
      case 'a': 
       panel.add(tN); 
       tN.setBounds(nx, 207, size.width, size.height); 
       break; 
      case 'c': 
       panel.add(tN); 
       tN.setBounds(nx, 193, size.width, size.height); 
       break; 
      case 'r': 
       panel.add(tN); 
       tN.setBounds(nx, 177, size.width, size.height); 
       break; 
      default: 
       break; 
     } 
     nx = nx + 50; 
     count = count + 1; 
     panel.repaint(); 
    } 
} 

Beim Laufen, ich gibt Sie 'a' in die Konsole und der Hinweis angezeigt. Dann gibt NetBeans dies aus:

run: 
a 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 1 
    at java.awt.Container.getComponent(Container.java:334) 
    at javax.swing.JComponent.rectangleIsObscured(JComponent.java:4390) 
    at javax.swing.JComponent.paint(JComponent.java:1054) 
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) 
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) 
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) 
    at javax.swing.RepaintManager.paint(RepaintManager.java:1272) 
    at javax.swing.JComponent._paintImmediately(JComponent.java:5158) 
    at javax.swing.JComponent.paintImmediately(JComponent.java:4969) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:831) 
    at javax.swing.RepaintManager$4.run(RepaintManager.java:814) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) 
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) 
    at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) 
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
BUILD SUCCESSFUL (total time: 6 seconds) 

Vielen Dank.

+0

bitte zeigen uns den Stack-Trace – ItamarG3

+0

Zur Zeit versucht, diese zu finden. Nicht an NetBeans gewöhnt. Ich entschuldige mich. – JMV12

+0

der Fehler sagt, dass Sie versuchen, auf eine nicht existierende Komponente GetComponent zuzugreifen - wir brauchen diesen Teil des Codes lieber im Idealfall ein komplettes laufendes Programm – gpasch

Antwort

0

Sie können einen Tastatur-Scanner nicht in einer GUI-Anwendung verwenden. Es scheint zu funktionieren, aber Sie müssen in eine Unendlichkeit von Problemen geraten.

Stattdessen müssen Sie eine ordnungsgemäße GUI einrichten und die Ereignisschleife ausführen lassen. Genau wie dies zu tun ist, hängt von dem jeweiligen GUI-Framework ab, das Sie verwenden. Was auch immer es ist, bin ich sicher, dass die Interwebz sind voll mit Beispielcode, der Ihnen zeigt, wie man eine Ereignisschleife einrichten. Es sollte nur ein paar Zeilen Code sein.

In dieser GUI werden Sie ein Steuerelement erstellen, das den Fokus haben wird, damit es Tastaturereignisse empfängt.

So ruft die GUI einen Ereignisbeobachter von Ihnen auf, um Sie zu informieren, dass eine Taste gedrückt wurde.

Dann Ihr Schlüsselereignis Beobachter werden nicht sein Ding, und dann wird die GUI kümmert neu zu streichen usw.

+0

Sie beschreiben eine alternative Methode, aber Sie sind nicht auf die Frage des Benutzers haben wir eine Tonne davon - Ich bin mir sicher, dass ich eine Theorie habe, warum sich die Quanten bewegen – gpasch

+0

@gpasch Verwenden Sie etwas auf eine sehr falsche Weise, und Sie sind verpflichtet, seltsames Verhalten zu bekommen, das sehr schwer zu erklären ist. Nicht nur ich bin nicht bereit, genau zu untersuchen, wie genau diese falsche Verwendung genau dieses Verhalten verursacht, sondern auch, dass es dem OP nicht weiterhelfen wird, weil er besser nicht so weiter macht, und niemand sonst, der das will jemals gelesen, diese Antwort in der Zukunft hat etwas von einer solchen Erklärung zu gewinnen. Lesen Sie die Anweisungen eines Haushaltsgegenstandes: *** unsachgemäßer Gebrauch erlischt die Garantie. *** –

+0

Plus, ich beschreibe * keine alternative * Methode, ich beschreibe * die * Methode. –