paint - miganie ekranu

0

Witam, bawię się troszkę w javie (pisze mini gierke). Mój problem polega na tym, że po skompilowaniu po jakimś czasie ekran zaczyna migać i po jakimś czasie ustaje i tak w kółko. Nie mam pojęcia jak temu zaradzić. Dodam, że używam metody paint() do rysowania elementów.
Oto kod:

 
@Override
    public void paint(Graphics g) {
       
        super.paint(g);
        draw(g);
        
        // plansza.rysujPlansze(g);

    }

   
    public void draw(Graphics g) {
        
        for (int i = 0; i < plansza.plansza.length; i++) {
            for (int j = 0; j < plansza.plansza[0].length; j++) {
                if (plansza.plansza[i][j] == 1) {
                    g.drawImage(brick, 30 * j, 30 * i, this);
                }

                if (plansza.polaDocelowe[i][j] == 2) {
                    // g.setColor(Color.yellow);
                    // g.fillRect(30 * j, 30 * i, 30, 30);
                    g.drawImage(grass, 30 * j, 30 * i, this);
                }
                if (plansza.plansza[i][j] == 3) {
                    // g.setColor(Color.RED);
                    //g.fillOval(30 * j, 30 * i, 30, 30);
                    g.drawImage(chest, 30 * j, 30 * i, this);

                }
                if (plansza.wygrana() == true) {
                   boolean wygrana = true;
                    super.setVisible(false);
                    if (wygrana == true) {

                        JOptionPane.showMessageDialog(null, "BRAWO! WYGRAŁEŚ!");
                        System.exit(0);

                    }
                    

                }

            }
            for (int[] plansza1 :plansza.plansza) {
                for (int j = 0; j < plansza.plansza[0].length; j++) {
                    if (plansza.plansza[i][j] == 4) {
                        g.drawImage(player, 30 * j, 30 * i, this);

                    }
                }
            }

        }
    }
0

Nikt nie wie w czym może tkwić problem ? Obrazki z czytuje z dysku i wydaje mi się, że to problem z odświeżaniem. Proszę o szybką odpowiedź.

0

Przeciąż metodę paintComponent zamiast paint i przenieś tam wszystko co związane z rysowaniem. Rozwiązanie nie testowane, w dodatku bardzo dawno nie korzystałem z tego, ale wydaje mi się, że problem jest związany z brakiem podwójnego buforowania.

0

Jak przeciążam metodę paintComponent , to w ogóle nie ładują się żadne elementy.

0

Dobra ogarnąłem. Natomiast mam nowy problem, jak używać klawiatury w klasie JComponent ? Stworzyłem nową klasę gdzie rysuje całość a potem w klasie Okno tworze obiekt klasy rysującej , jednak nie działa mi obsługa klawiatury. Ktoś może podać jakieś wskazówki ? Z góry dziękuje. :)

0
komponent.addKeyListener(...); //obowiązkowe
komponent.setFocusable(true); //niektóre komponenty wymagają
...
komponent.requestFocus();

Zdarzenia klawiaturowe docierają tylko do komponentu z fokusem, zatem ostatnia instrukcja musi być umieszczona bezpośrednio przed wyświetleniem okna.

0

Zapomniałem o tym :P ok, dziękóweczka już wszystko śmiga. Do zamknięcia :)

0 użytkowników online, w tym zalogowanych: 0, gości: 0