Zamazywanie tego co narysowałem (AWT, Swing)

0

Hej!
Tworze prosty edytor grafiki....
Jest pewien problemik....
Wszystko co narysuje np na JFrame to... po przyslonieciu innym oknem powoduje zamazanie tego co narysowalem w metodzie paint... :/

to jest we JFrame

public void paint(Graphics g) {
    // jeśli rysowanie pędzlem jest wybrane... 
    
  if (pedzel_jToggleButton1.isSelected() == true)
    {
      g.setColor(aktualnie_wybrany_kolor);
      if (mouseclicked == true)
          {
             g.fillOval((mouse_x-5), (mouse_y-5), 10, 10);
              mouseclicked = false;
          }      
    }
    
    
  if (olowek_jToggleButton1.isSelected() == true)
  {
    g.drawRect(mouse_x, mouse_y, 1, 1);
    mouseclicked = false;
  }
  
} 

0

Rysuj na obiekcie BufferedImage, a BufferedImage na swojej ramce.

0

Dlatego na ramce zasadniczo się nie rysuje. Rysuje się na panelu lub komponencie specjalnie pod to ustawionym. Poza tym coś musiałeś skopać ponieważ nawet goły JFrame odrysowuje swoją zawartość pod przysłonięciu (używa clearRect()).

A powodem zamazywania jest chyba to, że w JFrame jest obiekt contentPane (zawartość tej ramki), którego metoda paint() ustawia kontekst graficzny, wywołuje paint() dla JFrame do odmalowania samej ramki jako takiej i jej wnętrza (tu właśnie podstawiłeś swój paint()), a następnie wywołuje swój panelowy paint(), co dla 3 pustych składników contentPane (składa się z 3 obiektów) oznacza zamazanie wcześniej przysłoniętego obszaru przez odmalowanie kolorem tła. Być może w szczegółach jest nieco inaczej (grzebanie w plikach Suna jest uciążliwe), ale mniej więcej o to chodzi.

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