Siema,mam pytanie.
W ramach ćwiczeń piszę sobie okienkowy kalkulator.Chcę podzielić program na 2 pliki.W pierwszym pliku Main znajduje się klasa odpowiedzialna za tworzenie buttonów z cyframi,znakami działań i polem do wyświetlania wprowadzanych liczb oraz wyników.
W drugiej klasie chciałem stworzyć cały mechanizm wykonywania działań,tylko że nie wiem jak uzyskać dostęp do pola tekstowego z klasy Main aby pobrać z niego dane do wykonywania operacji matematycznych.
Wiecie może jak to zrobić?
Dostęp do obiektu innej klasy
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Postów: 90
Jeżeli robisz to dla nauki to zobacz sobie przy okazji wzorzec projektowy MVC, może Ci się przydać. Najprościej będzie jak będziesz w drugiej klasie miał referencję do tej pierwszej.
- Rejestracja: dni
- Ostatnio: dni
Wiemy, konstruując (w klasie Main) obiekt tej drugiej klasy przekaż referencję do klasy Main.
new DrugaKlasa(this);
- Rejestracja: dni
- Ostatnio: dni
Dzięki za odpowiedzi.
Nie bardzo tylko wiem jak przekazać tę referencję.
Mam to zrobić w konstruktorze klasy Main?
- Rejestracja: dni
- Ostatnio: dni
Konstruktor klasy Main to dobre miejsce.
- Rejestracja: dni
- Ostatnio: dni
Czyli to będzie coś takiego? (Moja druga klasa nazywa się obliczenia,a pole z tekstem po prostu pole).
public JTextField pole = new JTextField(20);
Main()
{
obliczenia obliczenia = new obliczenia(pole);
}
obliczenia(JTextField pole)
{
}
- Rejestracja: dni
- Ostatnio: dni
Jeśli klasie Obliczenia (przestrzegaj konwencji, nazwy klas zaczynają się dużą literą) wystarczy dostęp do jednego pola tekstowego z klasy Main można prościej:
class Obliczenia
{
void policz(JTextField pole)
{
...
}
}
//w konstruktorze klasy Main
liczydło = new Obliczenia();
//w obsłudze przycisku
liczydlo.policz(pole);
}
Gdybyś potrzebował dostępu do kilku pól (komponentów), to musiałoby by być trochę inaczej
//w konstruktorze klasy Main
liczydlo = new Obliczenia(this);
//w definicji i konstruktorze klasy Obliczenia
class Obliczenia
{
private Main owner = null;
public Obliczenia(Main owner)
{
this.owner = owner;
...
void policz()
{
//korzystając z referencji owner, odczytujemy i zapisujemy w komponentach klasy Main
}
...
//w obsłudze zdarzenia w klasie Main
liczydlo.policz();