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ć?
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.
Wiemy, konstruując (w klasie Main) obiekt tej drugiej klasy przekaż referencję do klasy Main.
new DrugaKlasa(this);
Dzięki za odpowiedzi.
Nie bardzo tylko wiem jak przekazać tę referencję.
Mam to zrobić w konstruktorze klasy Main?
Konstruktor klasy Main to dobre miejsce.
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)
{
}
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();
Dzięki