Trieda, MouseListener pre objekt – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Trieda, MouseListener pre objekt – Java – Fórum – Programujte.comTrieda, MouseListener pre objekt – Java – Fórum – Programujte.com

 

abcd
~ Anonymní uživatel
15 příspěvků
2. 4. 2014   #1
-
0
-

Zdravím, zoberme si, že máme triedu ktorá generuje dva kruhy:

public class Trieda extends JComponent implements ActionListener,MouseListener {
public void paintComponent (Graphics g)
{
super.paintComponent(g);

g.setColor(Color.yellow);
g.fillOval(x , y, 100, 100);

g.setColor(Color.red);
g.fillOval(x , y, 100, 100);
}


}

akým spôsobom zachytím kliknutie cez mouseClicked

či už červeného, alebo žltého kruhu? 

Ide mi o to, aby každý jeden z týchto kruhov vykonal inú akciu po kliknutí.

Ďakujem za pomoc

Nahlásit jako SPAM
IP: 95.105.244.–
Flowy0
Věrný člen
2. 4. 2014   #2
-
0
-

ked si vytvoris instanciu kruhu tak k nemu musis registrovat mouselistener ... ak planujes pouzit len mouseclicked a len pre jednu instanciu potom bude najjednoduchsie vytvorit anonymnu triedu

addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me) { 
            System.out.println(me); 
          } 
        }); 

ak planujes pouzit to pre viac instancii potom si vytvoris rozne triedy ktore budu rozsirovat mouseadapter a prepises len metody ktore potrebujes

class RedClicked extends MouseAdapter {
	@Override
	public void mousePressed(MouseEvent e) {
		System.out.println("red")
	}
}

z tejto si vytvoris vzdy jednu instanciu a tuto zaregistrujes ako mouselistener pre viac instancii kruhu

este mozes implementovat mouselistener ale nenapada ma situacia kedy by to bolo vyhodne

Nahlásit jako SPAM
IP: 95.103.186.–
https://github.com/Flowy
abcd
~ Anonymní uživatel
15 příspěvků
2. 4. 2014   #3
-
0
-

#2 Flowy

Ďakujem, len som akosi nepochopil použitiu napr. tu:.

public class Trieda extends JComponent implements ActionListener,MouseListener {
public void paintComponent (Graphics g)
{
super.paintComponent(g);

g.setColor(Color.yellow);
g.fillOval(x , y, 100, 100);

g.setColor(Color.red);
g.fillOval(x , y, 100, 100);
}

    @Override
    public void mouseClicked(MouseEvent e) {
// kod na spustenie po kliknutí
    }


}

NetBeans mi automaticky, pripomenie a pridá všetky abstraktné metódy pre MouseListener

ako to, čo si písal využiť v tomto konkrétnom príklade?

Nahlásit jako SPAM
IP: 95.105.244.–
Flowy0
Věrný člen
2. 4. 2014   #4
-
0
-

vynechaj to implementovanie actionlisteneru a mouselisteneru ... to by si pouzil len ak by si sam implementoval metody odtialto ... potom by si mohol registrovat kazdu instanciu ako listenera samej seba ale rozlisovat farbu by si musel az po zachyteni eventu (alebo by si si spravil redtriedu a ine ale to by nedavalo zmysel)

neviem ako ti to netbeans doraba ale ak by si spustil tento kod tak by si vykreslil objekt g nastavil mu farbu na zltu a hned na to nastavil na cervenu ... predpokladam ze toto nieje cielom ... skus napisat kod ktory bude fungovat

Nahlásit jako SPAM
IP: 95.103.186.–
https://github.com/Flowy
abcd
~ Anonymní uživatel
15 příspěvků
2. 4. 2014   #5
-
0
-

#4 Flowy

Toto konkrétne vykreslí dva kruhy (samozrejme, pokiaľ sa budú líšiť súradnice x/y pre jeden a aj druhý kruh)

takže by sa nachádzali na ploche 2. A pre každý jeden z nich by som chcel mať MouseListener

Vďaka za pomoc

Nahlásit jako SPAM
IP: 95.105.244.–
z
~ Anonymní uživatel
268 příspěvků
2. 4. 2014   #6
-
0
-

Ale je to jedna komponenta obsahující oba kruhy, takže z eventu pro celou komponentu budeš muset rozlišit, pro který z nich je. Podívej se na interface Shape.

Nahlásit jako SPAM
IP: 88.101.8.–
Flowy0
Věrný člen
3. 4. 2014   #7
-
0
-

ak to budes vykreslovat ako jeden objekt tak to bude fungovat ako jeden objekt ... predpokladam ze ti rovnako bude registrovat aj kliknutie mimo kruhov (ale v ramci objektu) ... cize rozlisenie ci je to v kruhu alebo mimo mozes spravit len tak ze si zoberies suradnice a zistis aky objekt na nich je ... toto ma velmi daleko od OOP a je to zbytocne zlozite - ak to chces robit takto tak bude lepsie pouzit C kde sa bude lepsie pracovat s grafikou

Nahlásit jako SPAM
IP: 95.103.186.–
https://github.com/Flowy
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý