Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • Anonim


    Tworzę Arkanoida. Mam JFrame a w nim JPanel na którym rysuję poprzez paintComponent(). Problem pojawia się gdy wyświetlam JOptionPane.showInputDialog do wczytywania nick'u - widać w powstałym oknie to co jest pod nim, myślę że umieściłem coś w złym miejscu.

    Wygląda to w wielkim uproszczeniu tak:

    class A extends JPanel
    {
    paintComponent(Graphics g)
    {
    sterage(); / / funkcja ustalająca wartości zmiennych odpowiedzialnych za rysowanie i cołość działania programu;
    }


    sterage()
    {

    sethighscore()// funkcja sprawdza czy wynik osiągniety nadaje się do najlepszych i zczytuje nick i zapisuje do pliku
    }

    sethighscore()
    {
    name = (String)JOptionPane.showInputD ialog( this, "Znalazłeś się w pierwszej dziesiątce. Podaj imię:");
    /*wyświetla się tak jak pisałem wyżej ale działa poprawnie */

    jeszcze mam jedno pytanie co zwraca JOptionPane.showInputDialog jeśli nic nie wpiszę i nacisnę OK nie jest to null, ani "" , " "???
    }

    }
  • Adept

    Cześć
    daj skrina.

    >U.R.B.I. napisał
    >jeszcze mam jedno pytanie co zwraca
    >JOptionPane.showInputDi alog jeśli nic nie wpiszę i
    >nacisnę OK nie jest to null, ani "" , " "???

    Przecież to nie jest trudno sprawdzić eksperymentalnie. czemu więc tego nie zrobiłeś?
  • Anonim

    >Adept napisał

    >Przecież to nie jest trudno sprawdzić eksperymentalnie.
    >czemu więc tego nie zrobiłeś?

    jak pobierałem do np. String name
    a później wyświetlałem:
    System.out.println( "name " + name "score " + score)

    to otrzymywałem coś takiego
    name score 140

    z tego wnioskowałem, że name == "", ale nie chociaż powinno, bo do pliku też się nic nie zapisuje, a null to nie jest
    inny sposób nie przychodzi mi do głowy; )
  • Dzemus

    Aj waj - bron Cie Panie Boze przed umieszczaniem logiki aplikacji w paintComponent(Graphics g)... Masz jakis wyzszy cel przemawiajacy za tym? PaintComponent powinien sluzyc (jak nazwa wskazuje:P) do odrysowania komponentu (na postawie jakichs tam danych). Pamietaj, ze nie jestes jedynym ktory wywoluje te funkcje.. Robi to takze watek AWT w niektorych przypadkach.

    W twoim wyglada to tak:
    jestes wlasnie w trakcie odrysowywania komponentu (panelu), ale w miedzyczasie wywolujesz JOptionPane, ktory wyskakuje nad naszym panelem powodujac ponowne odrysowanie go, czyli wywolanie fukcji paintComponent :P A ta z kolei wywoluje kolejny JOptionPane itd.

    Reasumujac - zrob sobie watek, ktory bedzie wygladal tak:

    while(warunekKonca) {

    logikaAplikacji.nastepnyKrok();

    glownyPanel.repaint();

    }

    I w logice zamiesc sprawdzanie warunku highScore. A tak w ogole juz to HighScore pewnie jest po koncu gry, wiec to w ogole inna metoda powinna byc.
| |

Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test



Fotki

Miejsca grona (1)