Interfejs użytkownika - pobieranie danych do programu

0

Witam,
jestem początkujący w javie więc mam pewnie proste pytanie...

mam klasę główną z metodą main i w niej wykonuje wszystkie przeliczenia na zmiennych (dla uproszczenia - podaje string,przetwarzam i następnie go wyświetlam). Wszystko działa ok na konsoli, ale chciałbym zrobić interfejs użytkownika w którym w jednym polu tekstowym podaję string i po kliknięciu przycisku buttona wartość po przeliczeniach pojawia się w innym polu tekstowym.
Podstawowy mój problem to to, że jeśli podzielę program na 3 pliki class (główny gdzie jest main), drugi w którym buduje JFrame i trzeci gdzie buduje JPanel z przyciskami to nie jestem w stanie w tej klasie wprowadzić wartości PoleTekstowe do zmiennej PeselWpisany, która jest zadeklarowana i używana w klasie głównej z main.
Co źle robię i jak to zmodyfikować ?
W jaki sposób pobierać dane z interfejsu do zmiennych w programie ?

public class ButtonPanel extends JPanel implements ActionListener{
	private JButton Sprawdz;
public String PeselWpisany ="";
	 public ButtonPanel() {
	        Sprawdz = new JButton("Sprawdź");
	        Sprawdz.addActionListener(this);
	        JTextField PoleTekstowe = new JTextField("Podaj Pesel");
	        add(PoleTekstowe);
	        add(Sprawdz);
	        
	       
	 }
	 public void actionPerformed(ActionEvent e) {
	        Object source = e.getSource();
	 
	        if(source == Sprawdz)
	        {
	            setBackground(Color.GREEN);
	           // PeselWpisany = PoleTekstowe.getText();
	        }

Dodam, że w klasie ButtonPanel nie widzę zmiennych nawet tych typu public z klasy z metodą main

tak dla zobrazowania sytuacji:

//klasa główna
public class weryfikator {
public static void main(String[] args) {
String Pesel // tu chcę przypisać wartość z pola PoleTekstowe z klasy ButtonPanel, która znajduje się w osobnym pliku class
//pozostały kod
}
}

Bardzo proszę o pomoc, w jaki sposób w metodzie public void actionPerformed(ActionEvent e) odwoływać się do zmiennych zadeklarowanych i używanych w klasie Weryfikator ?

1

Zupełnie inaczej, zapomnij o klasie z metodą main. Taki program ma trzy elementy - wejście, logikę i wyjście. Niech wejście, zbierze informacje i przekaże je do logiki. Logika po przewrowadzeniu obliczeń niech wyśle ich wynik do wyjścia. Proste...

Oczywiste wręcz i nie powinno zajmować to nam tu miejsca. Podziel aplikację na cztery klasy. Pierwsza będzie zawierać metodę main i nic więcej. W metodzie tej utworzysz klasy odpowiedzilane za wejscie-wyjście i logikę oraz przekażesz im namiary na siebie. Taki szablon:

interface Output{
    void output(Map<String, Object> out);
}

class AppFrame extends JFrame implements Output{

    private final Logic logic;
    private JButton button;

    AppFrame(Logic logic) {
        this.logic = logic;
        button = new JButton("akcja");
        button.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // bardzo brzydkie, ale to tylko uproszczenie
                AppFrame.this.logic.doLogic(null, AppFrame.this);
                
            }
        });
    }

    @Override
    public void output(Map<String, Object> out) {
        // wyświetlasz dane
    }
}

class Logic {
       
    public void doLogic(Map<String, Object> in, Output out){
        out.output(in); // takie uproszczenie, zamień to na normalną logikę!
    }
}

i następnie w main:

Logic logic = new Logic();        
AppFrame af = new AppFrame(logic);
af.setVisible(true);

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