Avatar
D0ll0k
Člen
Avatar
D0ll0k:

Ahojte :D. Už jsem tu zas a mám další problém. Mám třídu, která dědí z JPanel a v ní vložená tlačítka, labely atd. Chtěl bych ale mít třídu, ve které bych mohl všechny tyto komponenty (doufám, že se to tak jmenuje) měnit. Třeba, když bych klikl na label zavolala by se v ní metoda label1Klik().
Koukal jsem ve visual studiu, že když přidám tlačítku, co má udělat po stisknutí, vytvoří se mi ve Form metoda button1Click(). Zkoušel jsem tu udělat i v jave, ale nešlo mi to. Nevěděl jsem jak tu metodu zavolat. Když jsem napsal:

public Hra()
{
    ...
    label.setText("Label");
    label.addMouseListener(new MouseAdapter()
    {
        @Override
        public void mouseReleased(MouseEvent e) {
            super.mouseClicked(e);
            label.setText("Clicked");
        }
    });
}

tak to fungovalo. Jenže pokud jsem přidal:

Gui gui = new Gui();

a pak místo label.setText jsem volal metodu v Gui, hlásilo mi to chybu.
Zjistil jsem, že tomu vadí právě to Gui gui = new Gui();
Neví někdo, co s tím?

Odpovědět 11.2.2015 22:33
Ten, co se snaží "programovat"
Avatar
Rasto
Redaktor
Avatar
Odpovídá na D0ll0k
Rasto:

Ahoj,
hmmm... nemyslim, ze tomu vadi Gui gui = new Gui();
Aku chybu ti to hlasi ?

A inak Label resp JLabel je pasivny komponent - zvycajne sa pouziva na zobrazenie textu alebo obrazku, nie na interakciu s userom.
A tiez nie je mi celkom jasne, na co tam mas super.mouseClic­ked(e). Preco rovno neprepisujes metodu mouseClicked(Mou­seEvent e)... Alebo je to preto, ze aj tvoja 'label' dedi od JLabel ?

 
Nahoru Odpovědět 17.2.2015 0:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.