Witam wszystkich,
Dopiero zaczynam moją przygodę z programowaniem więc proszę o wyrozumiałość. Stworzyłem dwie klasy - Window i MenuBarCreator. W drugiej klasie buduję całe menu, z którego później chcę obsługiwać pozostałe elementy programu. W jaki sposób mogę zamknąć program z poziomu klasy MenyBarCreator? Generalnie menu działa, pojawia się komunikat testowy w konsoli. Kombinuję z metodą dispose(), ale nic mi z tego nie wychodzi...
Czy profesjonalnie tworząc aplikację menu tworzy się w osobnej klasie? Wydaje się to bardziej czytelne i prostsze do dalszych modyfikacji, ale może są przyjęte jakieś inne standardy postępowania. Jestem samoukiem i nie miałem styczności jeszcze z profesjonalnym programowaniem. Gdyby ktoś miał jakieś materiały na temat standardów budowania programów byłbym zobowiązany. W internecie, poza ogólnymi paradygmatami nic szczegółowego nie znalazłem.
package MenuBarTest;
import javax.swing.*;
class Window extends JFrame {
public Window() {
MenuBarCreator menuBar = new MenuBarCreator();
setJMenuBar(menuBar);
pack();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Testy menu");
setSize(400,400);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e){
e.printStackTrace();
}
new Window();
}
}
package MenuBarTest;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import MenuBarTest.Window;
class MenuBarCreator extends JMenuBar implements ActionListener{
JMenu menu;
JMenuItem menuItemNew;
JMenuItem menuItemSave;
JMenuItem menuItemExit;
public MenuBarCreator() {
menu = new JMenu("File");
menuItemNew = new JMenuItem("New");
menuItemSave = new JMenuItem("Save");
menuItemExit = new JMenuItem("Exit");
menu.add(menuItemNew);
menu.add(menuItemSave);
menu.add(menuItemExit);
menuItemExit.addActionListener(this);
this.add(menu);
}
public void actionPerformed(ActionEvent e) {
Object menuSource = e.getSource();
if (menuSource == menuItemExit){
System.out.println("Exit selected");
//How to exit Window? Method dispose() does not work.
}
}
}