• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kółko i krzyżyk z obsługą w Swing

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
329 wizyt
pytanie zadane 10 września 2016 w Java przez Jonki Dyskutant (8,180 p.)

Mój pierwszy dzień nauki Swing. Próbuję napisać proste kółko i krzyżyk z obsługą w Swing. Błąd pojawia się w kodzie, gdzie próbuję sprawdzić czy w danej szufladce w tablicy jest znak X lub O. 

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at TicTacToe.addCharacterUser(TicTacToe.java:44)
    at Window.actionPerformed(Window.java:70)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

 

http://pastebin.com/RsJjnfJ5    http://pastebin.com/3GeKr41x

2 odpowiedzi

0 głosów
odpowiedź 10 września 2016 przez Tomasz90 Nałogowiec (25,140 p.)
w 44 linii w klasie TicTacToe element tablicy jest nullem
0 głosów
odpowiedź 11 września 2016 przez Trucik Obywatel (1,130 p.)

metoda: addCharacter(int x, int y)

dostaje null z prostego powodu. 2 razy inicjalizujesz tablicę:

    static String[][] tab = new String[4][4];
   
    public static void main(String[] args) {
           
    String[][] tab = new String[4][4];

 

przez co posiadasz pole statyczne o nazwie tab oraz zmienną lokalną o tej samej nazwie. W listenerze natomiast pytasz if(TicTacToe.addCharacterUser(1,1)), jest to zapytanie o pole, a nie zmienna lokalną funkcji main, która jest zainicjalizowana jako tablica 4x4 z samymi null'ami!

 

Zamień na:

public class TicTacToe {
   
    static String[][] tab;
    public static void main(String[] args) {
    tab = new String[4][4]
    tab[0][0] = ...

 

 

 

Podobne pytania

0 głosów
1 odpowiedź 1,096 wizyt
0 głosów
3 odpowiedzi 1,461 wizyt

93,433 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...