2 import javax
.swing
.text
.DefaultEditorKit
;
4 import java
.awt
.event
.ActionEvent
;
5 import java
.awt
.event
.ActionListener
;
6 import java
.awt
.event
.KeyEvent
;
7 import java
.util
.ArrayList
;
9 public class MainWindowsView
extends JFrame
{
11 MainWindowsView(String title
, PersonView view
) {
12 Container panel
= getContentPane();
13 //Create and set up the window.
15 setSize(view
.getDimension());
16 setLocationRelativeTo(null);
17 setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
20 JMenuBar menuBar
= createMenuBar();
23 //Get all Swing/AWT JPanel in the views and add them to the main panel.
24 ArrayList
<Component
> components
= new ArrayList
<>();
25 for (int i
= 0; i
< panel
.getComponentCount(); i
++) {
26 components
.add(panel
.getComponent(i
));
28 for (Component component
: components
) {
32 panel
.add(view
.getNorthPanel(), BorderLayout
.NORTH
);
33 panel
.add(view
.getSouthPanel(), BorderLayout
.SOUTH
);
34 panel
.add(view
.getEastPanel(), BorderLayout
.EAST
);
35 panel
.add(view
.getWestPanel(), BorderLayout
.WEST
);
36 panel
.add(view
.getPersonPanel(), BorderLayout
.CENTER
);
40 * Create menu that support cut/copy/paste.
42 private JMenuBar
createMenuBar() {
44 JMenuBar menuBar
= new JMenuBar();
46 JMenu fileMenu
= new JMenu("File");
48 menuItem
= new JMenuItem("Exit");
49 menuItem
.addActionListener(new ActionListener() {
50 public void actionPerformed(ActionEvent e
) {
54 fileMenu
.add(menuItem
);
56 JMenu editMenu
= new JMenu("Edit");
57 editMenu
.setMnemonic(KeyEvent
.VK_E
);
59 menuItem
= new JMenuItem(new DefaultEditorKit
.CutAction());
60 menuItem
.setText("Cut");
61 menuItem
.setMnemonic(KeyEvent
.VK_T
);
62 editMenu
.add(menuItem
);
64 menuItem
= new JMenuItem(new DefaultEditorKit
.CopyAction());
65 menuItem
.setText("Copy");
66 menuItem
.setMnemonic(KeyEvent
.VK_C
);
67 editMenu
.add(menuItem
);
69 menuItem
= new JMenuItem(new DefaultEditorKit
.PasteAction());
70 menuItem
.setText("Paste");
71 menuItem
.setMnemonic(KeyEvent
.VK_P
);
72 editMenu
.add(menuItem
);
74 menuBar
.add(fileMenu
);
75 menuBar
.add(editMenu
);
80 * Show the GUI. For thread safety,
81 * this method should be invoked from the
82 * event-dispatching thread.
84 public void showGUI() {
85 System
.out
.println("Created GUI on EDT? " +
86 SwingUtilities
.isEventDispatchThread());
89 this.setVisible(true);