odwołanie się do pola tekstowego spoza konstruktora

0

Witam,

tworzę w konstruktorze pole tekstowe. W konstruktorze mogę się odwołać do jego zawartości. Jeśli jednak chcę się odwołać do zawartości tego pola z pozycji menu, nie jest to już możliwe. W jaki sposób mogę się odwołać do wartości pola tekstowego?

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
//import java.awt.TextField;

public class NameOfMyClass extends JFrame implements WindowListener, ActionListener, MouseListener {

    public NameOfMyClass() {
        super("My application");
        
        setLayout(null);
        
        //...
        
        JTextField textFieldNr1 = new JTextField();
        getContentPane().add(txtTextFieldNr1);
        textFieldNr1.setBounds(horizontalValue,verticalValue,heightValue,widthValue);
        textFieldNr1.setText(stringDefaultDirectoryAndFile);
        stringFieldNr1 = textFieldNr1.getText(); //tutaj mogę pobrać wartość pola tekstowego

        setVisible(true);
    }
    
    public void actionPerformed(ActionEvent evnt) {
        String cmdCommand = evnt.getActionCommand();

        //...

        if (menuPosition.equals(cmdCommand)) {
            try {

                //...
                stringFieldNr1 = textFieldNr1.getText(); //a tutaj już nie mogę jej pobrać, bo kod nie wie, gdzie znajduje się to pole tekstowe (!!!)
                BufferedReader buffReader = new BufferedReader(new InputStreamReader(new FileInputStream(stringFile), stringEncoding));
                //...
             
             }
        }
    }
}

Pozdrawiam!

1
public class NameOfMyClass extends JFrame implements WindowListener, ActionListener, MouseListener {
 JTextField textFieldNr1; //teraz zmienna bedzie widoczna w całej klasie
    public NameOfMyClass() {
      ....
      textFieldNr1 = new JTextField();
       .....
       }
 }
        
1

W twoim kodzie pole tekstowe jest zmienną lokalną, która istnieje tylko w konstruktorze. Zrób z niego pole w klasie.

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
//import java.awt.TextField;
 
public class NameOfMyClass extends JFrame implements WindowListener, ActionListener, MouseListener {
    JTextField textFieldNr1;
    public NameOfMyClass() {
        super("My application");
 
        setLayout(null);
 
        //...
 
        textFieldNr1 = new JTextField();

Btw, może warto byś przed pisaniem programu przeczytał jakiś podręcznik.

0

OK, dzięki. Jaki podręcznik polecacie? Przede wszystkim chodzi mi o zrozumienie, jak dzielić kod między różne pliki źródłowe, co wiąże się z dobrym zaprojektowaniem klas itd., a także właśnie zakresem zmiennych, to wszystko pod kątem Javy, czyli też omówienie specyfiki składni tego języka, najczęściej kodowanych rzeczy + jak efektywnie korzystać z API. Thinking in Java podejrzewam, że jest dobre, ale najpierw bym wolał zacząć od czegoś krótszego. Program już prawie skończyłem, bo opierał się na wczytaniu pliku, jego przetworzeniu i wyrzuceniu pliku wyjściowego, choć trochę się w trakcie w kodzie zrobił bałagan właśnie ze względu na dzielenie działania między różne pliki źródłowe, zaprojektowanie klas i zakres zmiennych + trochę czasu mi zeszło na zrozumieniu prostych poleceń składni java, które np. w C++ w miarę szybko bym zrobił (takie dość standardowe zadania), ale w Javie to właściwie pierwszy projekt, jaki tworzę.
Pozdrawiam!

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