import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test{
public static void main(String[] args){
JFrame frame = new JFrame();
frame.add(new RamkaProgramuGlownego());
frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class RamkaProgramuGlownego extends JPanel{
public JTextField poleTxtGL;
private JTextArea duzePoleTxtGL;
private JButton przyciskGL;
public int x;
public RamkaPomocnicza ramkaPomocnicza;
public RamkaProgramuGlownego(){
poleTxtGL = new JTextField(10);
duzePoleTxtGL = new JTextArea(3,10);
przyciskGL = new JButton("Klik");
add(poleTxtGL);
add(duzePoleTxtGL);
add(przyciskGL);
ramkaPomocnicza = new RamkaPomocnicza(this);
przyciskGL.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent evt){
ramkaPomocnicza.show();
}
});
}
}
class RamkaPomocnicza extends JFrame{
private JTextField poleTxtPom;// = new JTextField(10);
private JTextArea duzePoleTxtPom;// = new JTextArea(3,10);
private JButton przyciskPom;
public RamkaProgramuGlownego pm;
public RamkaPomocnicza(RamkaProgramuGlownego panelPomocniczy){
setSize(300,300);
setResizable(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pm = panelPomocniczy;
poleTxtPom = new JTextField(10);
duzePoleTxtPom = new JTextArea(3,10);
przyciskPom = new JButton("Przeslij");
JPanel panel = new JPanel();
panel.add(poleTxtPom);
panel.add(duzePoleTxtPom);
panel.add(przyciskPom);
setContentPane(panel);
przyciskPom.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent evt){
String wiadomosc = duzePoleTxtPom.getText();
pm.poleTxtGL.setText(wiadomosc);
}
});
}
}
any nawiazac komunikacje miedzy dwoma klasami musisz miec wspolne podloze - nalezy przekazac obiekt, w tym wypadku przekazujemy obiekt klasy RamkaProgramuGlownego (moglbys tez przekazac same pola tekstowe co chyba byloby latwiejsze ^^ jednak wersja z panelem powinna lepiej zobrazowac zagadnienie), robimy to tworzac obiekt klasy ramkaPomocnicza
ramkaPomocnicza = new RamkaPomocnicza(this);
z parametrem this (przekazuje samego siebie)
nalezy zmodyfikowac konstruktor klasy ramkaPomocnicza tak, aby mogla "odebrac obiekt"
public RamkaPomocnicza(RamkaProgramuGlownego panelPomocniczy)
nastepnie, zachowujemy odebrany obiekt do zmiennej pm
pm = panelPomocniczy;
jako, ze obiekt klasy ramkaPomocnicza jest tworzony w konstruktorze klasy RamkaProgramuGlownego wystarczy jedynie ja pokazac
przyciskGL.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent evt){
ramkaPomocnicza.show();
}
});
skoro swiezo stworzony obiekt klasy ramkaPomocnicza ma dostep do wszystkich pol obiektu klasy RamkaProgramuGlownego wystarczy zmienic wartosc jednego z jego pol, w tym wypadku poleTxtGL
przyciskPom.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent evt){
String wiadomosc = duzePoleTxtPom.getText();
pm.poleTxtGL.setText(wiadomosc);
}
});