Dzień dobry
Otóż, piszę program typu Notatnik gdzie na dzień dzisiejszy mam następujące klasy:
- NotatnikFrame (dziedziczy po JFrame)
- NotatnikPanel (dziedziczy po JPanel)
- NotatnikMenuBar (dziedziczy po JMenuBar)
- NotatnikFileChooser (dziedziczy po JFileChooser)
W konstruktorze NotatnikFrame mam tworzone instancje klas NotatnikPanel oraz NotatnikMenuBar oraz odpowiednio ustawiane jako panel oraz menu. W jednej z opcji menu mam możliwość wyboru pliku poprzez NotatnikFileChooser; wybrany plik następnie będę przetwarzał - wyświetlał w komponencie JTextArea.
Pytanie:
Mój problem polega na tym, że zdarzenie które obsługuje wybór pliku jest w klasie NotatnikMenuBar, zaś zawartość pliku chciałbym móc przetwarzać w panelu (gdzie mam kontrolkę JTextArea) jednak jak zaznaczyłem wyżej instancje klas NotatnikMenuBar i NotatnikPanel są w NotatnikFrame. Chciałbym wiedzieć jak mogę przekazać wynik (nazwę pliku) zdarzenia z NotatnikMenuBar do NotatnikPanel
Tak wygląda obsługa zdarzenia w klasie NotatnikMenuBar
JMenuItem itemOtworz = new JMenuItem("Otwórz");
itemOtworz.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
NotatnikFileChooser fileChooser = new NotatnikFileChooser();
fileChooser.setFileHidingEnabled(false);
int returnOption = fileChooser.showOpenDialog(null);
if(returnOption == NotatnikFileChooser.APPROVE_OPTION) {
System.out.println("" + fileChooser.getSelectedFile().getAbsolutePath()); // tą scieżkę chciałbym przekazać do klasy NotatnikPanel
}
}
});
Zaś tak wygląda klasa NotatnikFrame
public class NotatnikFrame extends JFrame {
public NotatnikFrame(Dimension windowSize, String windowTitle) {
setSize(windowSize);
setTitle(windowTitle);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
notatnikMenuBar = new NotatnikMenuBar();
setJMenuBar(notatnikMenuBar);
notatnikPanel = new NotatnikPanel();
container = getContentPane();
container.add(notatnikPanel);
}
private Container container;
private NotatnikPanel notatnikPanel;
private NotatnikMenuBar notatnikMenuBar;
}