Nie do końca rozumiem co właściwie chcesz zrobić. Jeżeli chcesz przekazać wartośc progress z "a", to w metodzie z klasy B używasz "a.getProgress();"
Jeżeli jednak chciałbyś przenieść te dane używając metody z klasy A, to musiałbyś zrobić coś takiego:
public class A{
private int progress;
public int getProgress() {return progress;}
private B b;
public A(B callback) {b = callback;} //referencja do obiektu klasy, którą pomanipulujesz
public void showProgress(int progress) { b.showProgress(this.progress);}
}
public class B extends JPanel{
// jakoś musisz stworzyć obiekt, do którego referencja będzie w a
public A a = new A(this); //można to wrzucić do konstruktora B lub dowolnej jej metody
public int progress;
public void showProgress(int progress){
this.progress = progress;
repaint();
}
}
Tyle, że nie jest to najszczęśliwsza konstrukcja bo klasa A jest ściśle zależna od klasy B. Najczęściej prywatne pole b klasy A jest nie typu bezpośrednio B, a typu interfejsu, który jest realizowany przez B (wtedy interfejs taki musiałby mieć metodę setProgress, którą B implementuje). Jeszcze innym sposobem jest wpakowanie klasy A do B jako klasy wewnętrznej - bo wtedy klasa A ma dostęp do wszystkich pól klasy B obiektu w którym zostałby stworzony obiekt klasy A (poprzez B.this - który jest zresztą domyślny w klasie wewnętrznej B). W tym wypadku wyglądałoby to tak:
public class B extends JPanel{
public class A{
private int progress;
public int getProgress() {return progress;}
public void showProgress(int progress) { B.this.showProgress(this.progress);}
// lub prostszy wariant 2, gdzie robimy bezpośredni dostęp do pola prywatnego klasy zawierającej:
// public void showProgress(int progress) { B.this.progress = /*this.*/progress;}
}
// jakoś musisz stworzyć obiekt, do którego referencja będzie w a
public A a = new A(); //konstruktor domyślny
public int progress;
public void showProgress(int progress){
this.progress = progress;
repaint();
}
}
Mam nadzieję, że to Ci coś rozjaśni, albo załapiesz, że chciałeś coś zupełnie innego. :)