Przekazywanie sterowania z komponentu do obiektu go zawieraj

0

Stworzyłem sobie kontrolkę zawiera panel a na nim jakieś pola, i przycisk. Następnie wykorzystuję tę kontrolkę w programie.
Jak teraz zrobić by po wprowadzeniu danych i naciśnieciu przycisku wykonała mi się np. metoda paintComponent w obiekcie który zawiera te kontrolke?

Chciałęmsobie uproscić, uporzadkować kod tworząc osobne klasy, ale bede chyba musial zrezygnowac z tych wlasnych klas i wszystko umieszczac pojedynczo po prostu i standardowo wtedy oprogramuje sobie ActionPerformed i w nim wywolam metode repaint dla tego przycisku. Tylko ,mie zastanawia jak to mozna rozwiazac dla wlasnego calego komponentu to przekazywanie sterowania do obiektu ktory zawiera te moja wlasna kontrolke?

0

Niekoniecznie. Załóżmy, że masz taki kod;

public class MójKomponent extends JPanel{

// elementy w tym button

}

teraz chcesz by po kliknięciu na przycisk w MójKomponent została wykonana jakaś akcja. Wystarczy zatem byś przekazał do komponentu czy to w konstruktorze czy to za pomocą metody ustawiającej obiekt klasy MouseAdapter z zaimplementowaną metodą onClick. Adapter dodajesz do buttona i nie musisz się już martwić o kod panelu. Sam adapter możesz stworzyć mniej więcej tak;


final JPanel panelDoKtóregoDodajęMójPanel = new JPanel();
MójPanel mójPanel = new MójPanel();
MouseAdapter adapter = new MouseAdapter() {
	@Override
	public void mouseClicked(MouseEvent e) {
             panelDoKtóregoDodajęMójPanel .paintComponent();
	}
};

mójPanel.addButtonListener(adapter);
panelDoKtóregoDodajęMójPanel.add(mójPanel);
0

Dzieki bardzo za pomoc! Mam bardzo podobną sytuację do przedstawionej tu, najwyżej będę musiał przerobić nieco, bo mam tak:

public class MójPanel extends JPanel{

// elementy w tym button

}

i


class panelDoKtóregoDodajęMójPanel extends JPanel() {
 MójPanel mójPanel = new MójPanel();
 add(mojPanel);

 public void paintComponent() {
 }
}

W Twoim przypadku będę musiał utworzyć jeszcze dodatkową klasę dzidziczącą po panelu i w niej dopiero stworzyć finalny obiekt klasy panelDoKtóregoDodajęMójPanel jak i obiekt MójPanel.

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