package MenuFrame; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class MenuFrame extends JFrame { private RectanglePanel panel; private Random generator; public MenuFrame() { generator = new Random(); panel = new RectanglePanel(); getContentPane().add(panel, BorderLayout.CENTER); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); menuBar.add(createFileMenu()); menuBar.add(createEditMenu()); pack(); } public JMenu createFileMenu() { JMenu menu = new JMenu("File"); menu.add(createFileNewItem()); menu.add(createFileExitItem()); return menu; } public JMenu createEditMenu() { JMenu menu = new JMenu("Edit"); menu.add(createMoveMenu()); menu.add(createEditRandomizeItem()); return menu; } public JMenu createMoveMenu() { JMenu menu = new JMenu("Move"); menu.add(createMoveItem("Up", 0, -1)); menu.add(createMoveItem("Down", 0, 1)); menu.add(createMoveItem("Left", -1, 0)); menu.add(createMoveItem("Right", 1, 0)); return menu; } public JMenuItem createFileNewItem() { JMenuItem item = new JMenuItem("New"); class MenuItemListener implements ActionListener { public void actionPerformed(ActionEvent event) { panel.reset(); } } ActionListener listener = new MenuItemListener(); item.addActionListener(listener); return item; } public JMenuItem createFileExitItem() { JMenuItem item = new JMenuItem("Exit"); class MenuItemListener implements ActionListener { public void actionPerformed(ActionEvent event) { System.exit(0); } } ActionListener listener = new MenuItemListener(); item.addActionListener(listener); return item; } public JMenuItem createMoveItem(String label, final int dx, final int dy) { JMenuItem item = new JMenuItem(label); class MenuItemListener implements ActionListener { public void actionPerformed(ActionEvent event) { panel.moveRectangle(dx, dy); } } ActionListener listener = new MenuItemListener(); item.addActionListener(listener); return item; } public JMenuItem createEditRandomizeItem() { JMenuItem item = new JMenuItem("Randomize"); class MenuItemListener implements ActionListener { public void actionPerformed(ActionEvent event) { //for(int i = 0; i< 10; i++){ int dx = -1 + generator.nextInt(3); int dy = -1 + generator.nextInt(3); panel.moveRectangle(dx, dy);//} } } ActionListener listener = new MenuItemListener(); item.addActionListener(listener); return item; } }