Put each view inside its own panel and add each panel to the main panel.
[Persons_Comparator.git] / src / MainWindowsView.java
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5 import java.util.ArrayList;
6
7 public class MainWindowsView extends JFrame {
8
9 MainWindowsView(String title, JPanel panel) {
10 //Create and set up the window.
11 setTitle(title);
12 setSize(300, 300);
13 setLocationRelativeTo(null);
14 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
15
16 //Create menu
17 JMenuBar menuBar = new JMenuBar();
18 setJMenuBar(menuBar);
19 JMenu fileMenu = new JMenu("File");
20 menuBar.add(fileMenu);
21 JMenuItem exit = new JMenuItem("Exit");
22 exit.addActionListener(new ActionListener() {
23 public void actionPerformed(ActionEvent e) {
24 System.exit(0);
25 }
26 });
27 fileMenu.add(exit);
28
29 //Get all Swing/AWT primitive components in the views and add them to the main panel.
30 ArrayList<Component> components = new ArrayList<>();
31 for (int i = 0; i < panel.getComponentCount(); i++) {
32 if ((panel.getComponent(i) instanceof Container)) {
33 Container subContainer = (Container) panel.getComponent(i);
34 for (int j = 0; j < subContainer.getComponentCount(); j++) {
35 components.add(subContainer.getComponent(j));
36 }
37 }
38 }
39 for (Component component : components) {
40 panel.add(component);
41 }
42
43 setContentPane(panel);
44 }
45
46 /**
47 * Show the GUI. For thread safety,
48 * this method should be invoked from the
49 * event-dispatching thread.
50 */
51 public void showGUI() {
52
53 //Display the window.
54 //this.pack();
55 this.setVisible(true);
56 }
57 }