Rysowanie na innym panelu

0

Witam,

założmy sytuację, że posiadamy dwa panele. W jednym panelu jest obszar rysowania (panelRysowania), a w drugim panelu przyciski (panelMenu), które decydują o rysowaniu na panelu panelRysowania.

Cały problem to przekazywanie akcji rysowania, z panelMenu do panelRysowania.

Rozwiązałem to w ten sposób:

		class jakisPrzycisk implements ActionListener {
			public void actionPerformed(ActionEvent e) {
				
				Graphics2D t = (Graphics2D)panelRysowania.getGraphics();
                                                //tutaj jakies operacje,ale dla prostoty niech bedzie to tylko linia
				t.drawLine(10, 10, 200, 200); 
		    }	
		}

Ale nie działa to tak jak należy, ponieważ:

  • żeby faktycznie narysowało linię, muszę dwukrotnie nacisnąć przycisk
  • jeśli już linia zostanie narysowana i zminimalizuje okno, to potem ona znika
0

Bo to trzeba inaczej. Wszystkie metody, które coś rysują, np. drawLine napisz wewnątrz metody paint. W metodzie actionPerformed zrób ustawianie parametrów (początek i konice linii i inne), a na koniec wywołaj metodę repaint(). W sytuacji jak przywrócisz okno po minimalizacji repaint wywoła się samo, wywoła paint i narysuje znowu to samo co potrzeba.

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