Witam.
Proszę o pomoc w przekazaniu wartości zmiennej pomiędzy dwoma klasami.
Przedstawiłem dość prosty kod programu który działa następująco:
Z pierwszej klasy uruchamiam metode startAtmos() drugiej klasy, w ktorej zmieniam wartość zmiennej v.Następnie za pomocą setera przekazuje z powrotem zmienioną wartość v do klasy bazowej Main.
Co ciekawe w seterze wartość jest prawidlowa ale dalej w actionPerformed juz niestety nie.Potrzebuję wartość ustawioną w drugiej klasie "Second" do części nasłuchu: actionPerformed
Proszę o pomoc...
public class Main implements ActionListener {
JButton b;
private int v=7;
Second obiektSecond;
public static void main(String args[])
Main obiekt = new Main();
obiekt.gui();
}
public void gui(){
JFrame frame = new JFrame();
frame.setBounds(100,100,200,200);
frame.setLayout(null);
b = new JButton();
b.setBounds(50,50,50,50);
b.setVisible(true);
b.addActionListener(this);
frame.add(b);
frame.setVisible(true);
v=8;
obiektSecond = new Second();
obiektSecond.startAtmos();
}
public void setVariable(int p){ //ODEBRANIE WARTOŚCI
this.v = p;
System.out.println("setter: " + v); //tutaj jest OK
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b){
System.out.println("action" + v); //tutaj juz nie :-(
metoda();
}
}
public void metoda(){
System.out.println("metoda" + v); // no i tu tez nie :(
}
}
//-----------------------------------------------------------------
public class Second extends JPanel {
public int v=2;
Main obiektMain;
public void startAtmos() {
v = 50; //ZMIANA WARTOŚCI
obiektMain = new Main();
obiektMain.setVariable(v); //Wysłanie zmiennej
}
}