Pobieranie na biezaca polozenia ramki na ekranie

0

1.
Hej, struktura wyglada tak. Najpierw w EventQueue, w metodzie run wrzucam konstruktor ramki. Ramka jest w klasie o nazwie MyFrame. W klasie MyFrame daje konstruktor Panelu (MyPanel). No i teraz mam tak, ze podczas dzialan na ramce w przypadku kiedy uzytkownik przesunie ramke musze sie o tym dowiedziec by odpowiednio wykonac dzialania. Tylko jak sie odwolac? Znalazlem metoda getLocationOnWindow() ktora bylaby pomocna. Tylko nie wiem jak ja zaimplementowac. Sluchacza musialbym wrzucic do klasy z ramka? Bylby to jakis WindowEvent? Jesli tak to dalej, w jaki sposob przeslac do MyPanel informacje o zmianei jej polozenia?

TEST
package pl.java.myproject;

import java.awt.EventQueue;


public class Test {
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable () {
			public void run () {
				MyFrame frame = new MyFrame();
			}
		});
	}
}
MY FRAME
package pl.java.myproject;

import javax.swing.JFrame;

class MyFrame extends JFrame {
	public MyFrame () {
		setSize(600,400);
		setVisible(true);

		add(new MyPanel());
	}
}
MY PANEL
...

2.
Jak myslicie w jaki sposob jest zrobione w windowsowym paincie ze jak np. narysujesz trojkat z 3 prostych (ale nie mowiac jawnie ze rysujesz wielobok zamkniety) to gdy zamaluesz obszar pomiedzy nimi zamalowany zostanie jakby byl to wielokat? To sa jakies skomplikowane procedury idacy piksel po pikselu i sprawdzajace czy jest utworzona figura zamknieta czy mozna to jakos łatwiej?

0
  1. ComponentListener i metoda componentMoved. Po mojemu, jeśli musisz "ręcznie" przesuwać komponenty, to skopałeś projekt.
  2. Nie wiem jak jest w paincie, w Javie masz metodę fillPolygon.
0
  1. Nie komponent tylko cale okno. Chodzi o to ze napisalem prostego painta i mam metode ktora po nacisnieciu ctrl z wyrownuje kursor zeby narysowac linie prosta. W zaleznosci od polozenai kursora mozna narysowac linie pozioma lub pionowa. Czyli tak jak dzial shift w gimpie na przyklad. Do wyrownanai ulozenia kursora uzywam klasy Robot. Tylko ze on ustawia kursor dla wartosci na ekranie. Ja defaultowo mam ulozenie okna oddaleone o 100px. Wiec przy wcisnieciu ctrl z ustawiam odpowiednio kursor + dodaje 100 do x i y. Ale jak uzytkownik przesunie okno to wszystko sie sypie bo okno nie jest juz oddalone o 100 tylko o 120.
  2. To wiem ale mi chodzi o to ze ktos narysuje trojkat z 3 PROSTYCH. Nie rysuje jawnie wielokata tylko 3 proste ktore ulozyly sie akurat w trojkat. W paincie jak klikne zamalowanie w srodku tego trojkata to mi go zamaluje. Ale skad paint wie ze ma zamalowac ten trojkat, ze on jest zamkniety itd?
0
  1. Całe okno (JFrame) też jest komponentem.
0
michat34 napisał(a):
  1. To wiem ale mi chodzi o to ze ktos narysuje trojkat z 3 PROSTYCH. Nie rysuje jawnie wielokata tylko 3 proste ktore ulozyly sie akurat w trojkat. W paincie jak klikne zamalowanie w srodku tego trojkata to mi go zamaluje. Ale skad paint wie ze ma zamalowac ten trojkat, ze on jest zamkniety itd?

http://en.wikipedia.org/wiki/Flood_fill

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