Przekazywanie obiektu obecnej klasy do innej.

0

Witam,

Mam problem, którego nie umiem rozwiązać. Otóż pod przyciski w panelu mam podpięte zdarzenia.
Zdarzenia te opisane są jednak w innej klasie, gdyż opieram się o model MVC.
Chciałbym, aby po wciśnięciu jednego z przycisków textbox'y (a właściwie JTextField-y) stały się edytowalne.
Czy jest możliwość przekazania obiektu klasy, w której znajduje się owy button, do klasy, gdzie są opisane jego zdarzenia?
Czy muszę jednak tworzyć nowy obiekt tej klasy w klasie ze zdarzeniami?

Dziękuję

0

Jest okolo setka sposobow na to, pokaz jakis kawalek kodu.

W ciemno moge tylko rzucic haslem typu http://pl.wikipedia.org/wiki/Wstrzykiwanie_zale%C5%BCno%C5%9Bci

0

Oto przykładowy kod:

przykładowa klasa UserInterface

public class UserInterface extends JPanel{
	
	public JLabel name_label = new JLabel("Imię: ");
	public JLabel lastname_label = new JLabel("Nazwisko: ");
	
	public JTextField name_tf;
	public JTextField lastname_tf;
	
	public JButton zmien_dane;

        public String imie;
        public String nazwisko;
	
	public UserInterface(ActionListener al) {

             imie = "Marian";
             nazwisko = "Kowalski";
	     
	     zmien_dane = new JButton("Edtytuj swoje dane");
	     zmien_dane.setName("change_data_button");
	     zmien_dane.addActionListener(al);
	     
	     name_tf = new JTextField();
	     name_tf.setEditable(false);
	     name_tf.setText(imie);
	 	 
	     lastname_tf = new JTextField();
	     lastname_tf.setEditable(false);
	     lastname_tf.setText(nazwisko);
	     
	     this.add(name_label);
	     this.add(lastname_label);
	     
	     this.add(name_tf);
	     this.add(lastname_tf);
	}
}

klasa Logic

public class Logic implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		JButton button = (JButton) e.getSource();
		
		if(button.getName().equals("change_data_button")) { 
			// ???????????????????????????????????????????
			
		}
	}
2

Jedno z możliwych rozwiązań. W klasie Logic dodaj pole typu UserInterface, obiekt al klasy Logic twórz w konstruktorze klasy UserInterface i przekaż w konstruktorze klasy Logic referencję do klasy UserInterface (...new Logic(this)).

0

Kurcze, faktycznie to dość proste. Dzięki

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