witam mam metode: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { utworzoną w edytorze graficznym w netbeans, jest zablokowana edycja tekstu jak zmienić tą metodę na public
Tej metody nie zmienisz, ale możesz zrobić tak, że ona będzie wywoływać np. mojaMetoda() i tę metodę możesz zrobić public.
Pozdro.
Kiedys robilem GUI w NB (bardzo dawno) i te automatycznie generowane metody byly objete czyms w stylu:
// <-- autogenerated method do not modify
... metoda
// <-- end of autogenerated block
(dokladnie nie pamietam jak to wygladalo ale chodzi o idee)
Otworz plik w notatniku czy czymkolwiek co nie jest netbeansem a pozawala edytowac pliki tekstowe i usun te komentarze - od tej pory sa to normalne metody i mozesz je edytowac nawet w obrebie NB.
Nie jestem jednak pewien czy nadal tak jest, ale sprobowac mozesz.
Jednak najlepiej zrobic tak jak mowi Black - stworz nowa metode, i ja wywoluj sam oraz w tej autowygenerowanej metodzie - tak czy tak jest to czystsze niz wolanie listenera.
Ale w ogóle po co tą metodę ręcznie wywoływać? JButton ma nawet metodę doClick(), symulującą kliknięcie.
Poza tym nie możesz sobie wywoływać bezstresowo byle jakich metod nie będąc w EDT, bo program może zacząć ci się sypać.
Alez alez - jesli te metody nie robia nic z komponentami Swinga to moze sobie wywolywac z jakiego watka chce - oczywiscie dbajac o synchronizacje swoich watkow.
ok w końcu rozwiązałem problem w inny sposób dzięki za pomoc
Jakby ktoś jeszcze miał z tym problem:
- zaznaczyć komponent
- zakładka Code
- Variable Modifers i ten przycisk po prawej
- zmienić Acces z private na public.
Ale raczej autorowi chodziło o wywołanie konkretnej metody z zewnątrz, a nie dostanie się do obiektu.
To co Ty proponujesz to tylko zmiana widoczności samego komponentu i łatwiej się tam dostać klikając prawym->Customize Code i jak widzisz tam można samemu dodać, zmienić właściwości SAMEGO komponentu.
Autor miał na myśli zmianę widoczności metody np. MouseListener'a i tego nie zmienisz tam. Szukałem długo i faktycznie nie da się tego zmienić:/
Ale z drugiej strony MouseListener powinien być w tej samej klasie co zdefiniowany obiekt komponentu więc do końca nie wiem po co autor chce mieć public.
Tyle że to nie jest stricte MouseListener, a raczej w tym przypadku ActionListener. Projekty utworzone w NetBeans przy użyciu "New Desktop Application" (czy jakoś tak) używają Swing App Framework, który np używa refleksji do wywoływania metod reagujących na zdarzenia - co nie zmienia faktu, że powinny robić dokładnie to samo co te w listenerach.
O ile dobrze pamiętam :)