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
, JPanel panel
) {
12 //Create and set up the window.
14 setSize(panel
.getPreferredSize());
15 setLocationRelativeTo(null);
16 setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
19 JMenuBar menuBar
= createMenuBar();
22 //Get all Swing/AWT JPanel in the views and add them to the main panel.
23 ArrayList
<Component
> components
= new ArrayList
<>();
24 for (int i
= 0; i
< panel
.getComponentCount(); i
++) {
25 components
.add(panel
.getComponent(i
));
27 for (Component component
: components
) {
31 setContentPane(panel
);
35 * Create menu that support cut/copy/paste.
37 private JMenuBar
createMenuBar() {
39 JMenuBar menuBar
= new JMenuBar();
41 JMenu fileMenu
= new JMenu("File");
43 menuItem
= new JMenuItem("Exit");
44 menuItem
.addActionListener(new ActionListener() {
45 public void actionPerformed(ActionEvent e
) {
49 fileMenu
.add(menuItem
);
51 JMenu editMenu
= new JMenu("Edit");
52 editMenu
.setMnemonic(KeyEvent
.VK_E
);
54 menuItem
= new JMenuItem(new DefaultEditorKit
.CutAction());
55 menuItem
.setText("Cut");
56 menuItem
.setMnemonic(KeyEvent
.VK_T
);
57 editMenu
.add(menuItem
);
59 menuItem
= new JMenuItem(new DefaultEditorKit
.CopyAction());
60 menuItem
.setText("Copy");
61 menuItem
.setMnemonic(KeyEvent
.VK_C
);
62 editMenu
.add(menuItem
);
64 menuItem
= new JMenuItem(new DefaultEditorKit
.PasteAction());
65 menuItem
.setText("Paste");
66 menuItem
.setMnemonic(KeyEvent
.VK_P
);
67 editMenu
.add(menuItem
);
69 menuBar
.add(fileMenu
);
70 menuBar
.add(editMenu
);
75 * Show the GUI. For thread safety,
76 * this method should be invoked from the
77 * event-dispatching thread.
79 public void showGUI() {
83 this.setVisible(true);