Forum » Programiranje » Java, pozicija kurzorja znotraj JPanel
Java, pozicija kurzorja znotraj JPanel
marjan_h ::
Lep pozdrav, Imam košček sledeče kode:
panel = new JPanel(); panel.setBackground(Color.white); panel.setBounds(80,10, 500, 450);Ta panel potem dodam na JFrame. Zanima me kako bi dobil koordiante kurzorja znotraj tega panela. Tako, da bi bi bilo koordinatno izhodišče (0,0), v levem zgornjem kotu panela. Moram tudi zaznati klik znotraj panela. Kot sem na internetu gledal, MouseInfo ne pride v poštev, ker ta dobi koordinate od celotnega zaslona. Hvala za odgovore.
- spremenil: marjan_h ()
marjan_h ::
Po nekaj času iskanja, sem našel MouseListener, kar bom verjetno uporabil ko bo uporabnik levo-kliknil miško.
Kaj se pa uporablja, da dobim koordinate kurzorja znotraj JPanel?
Kaj se pa uporablja, da dobim koordinate kurzorja znotraj JPanel?
marjan_h ::
Sedaj mi dela, HVALA.
Mi lahko kdo še razloži naslednjo kodo:
Kako se lahko tukaj izriše črta na zaslonu, gdrawline je definiran v metodi paint, te pa nikoli ne kličemo nikjer.
Kako to dela?
Hvala za pomoč
Mi lahko kdo še razloži naslednjo kodo:
/* * Output: * */ import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class MainClass extends JPanel { public void paint(Graphics g) { g.drawLine(25, 25, 120, 120); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new MainClass()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(200,200); frame.setVisible(true); } }
Kako se lahko tukaj izriše črta na zaslonu, gdrawline je definiran v metodi paint, te pa nikoli ne kličemo nikjer.
Kako to dela?
Hvala za pomoč
Wrop ::
Tvoj razred je podrazred JPanel. Ta pa ima še en nadrazred JComponent. Ta nadrazred ima metodo paint, ki jo ti v tvojem razredu prepišeš s svojo metodo (z istim imenom (narediš override)). Vsakič, ko se tvoj MainClass (JPanel) izriše na zaslonu se kliče metoda paint, ki pa si jo ti prepisal s svojo metodo paint. Torej se kliče tvoja metoda, ne pa metoda, ki je napisana v nadrazredu JComponent.
marjan_h ::
Kako veš da se kliče metoda paint, nikjer nismo rekli eksplicitno;
Jaz vem, le da se konstruktor kliče ko objekt ustvarimo. Metode se pa morajo klicati vedno eksplicitno.
MainClass objekt = new MainClass() objekt.paint(g_parameter)
Jaz vem, le da se konstruktor kliče ko objekt ustvarimo. Metode se pa morajo klicati vedno eksplicitno.
Wrop ::
Tvoj MainClass razred je razširjen JPanel. S tem si podedoval vse metode in spremenljivke vseh nadrazredov, vse do razreda Object.
JPanel ima podedovane metode razreda JComponent. Ta JComponent razred ima metodo paint.
Ko se objekti izrisujejo, swing kliče metodo paint. Ponavadi kliče metodo paint v JComponent razredu, če pa jo redefiniraš v svojem objektu, pa kliče tvoj paint.
Paint metode naj se ne bi klicalo direktno, ker to počne swing.
JPanel ima podedovane metode razreda JComponent. Ta JComponent razred ima metodo paint.
Ko se objekti izrisujejo, swing kliče metodo paint. Ponavadi kliče metodo paint v JComponent razredu, če pa jo redefiniraš v svojem objektu, pa kliče tvoj paint.
Paint metode naj se ne bi klicalo direktno, ker to počne swing.
marjan_h ::
Hvala Wrop, za tvoj odgovor.
Sedaj razumem, torej vedno se kliče metoda paint in karkoli definiram v njej se izrise.
Kako pa potem narediš, da ko klikneš recimo gumb, da se izrišejo črte, krivulje itd...?
Ker ko ustvariš objekt, se že izriše, kot ti praviš Wrop; se kliče metoda paint.
Sedaj razumem, torej vedno se kliče metoda paint in karkoli definiram v njej se izrise.
Kako pa potem narediš, da ko klikneš recimo gumb, da se izrišejo črte, krivulje itd...?
Ker ko ustvariš objekt, se že izriše, kot ti praviš Wrop; se kliče metoda paint.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1198 (877) | PecenkA |
» | [Java] Nova nit znotraj JPanel.paintComponent()Oddelek: Programiranje | 1960 (1747) | alexa-lol |
» | [JAVA] branje iz datotekeOddelek: Programiranje | 2413 (2048) | Bela01 |
» | [Java]VprašanjaOddelek: Programiranje | 2112 (1580) | Bela01 |
» | [NALOGA][Java] Težave pri pisanju slikarjaOddelek: Programiranje | 2299 (1941) | l0g1t3ch |