private void initMenu() { JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); // File Menu JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic(KeyEvent.VK_F); menuBar.add(fileMenu); JMenuItem fileNewItem = new JMenuItem("New", KeyEvent.VK_N); fileNewItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); fileMenu.add(fileNewItem); JMenuItem fileOpenItem = new JMenuItem("Open...", KeyEvent.VK_O); fileOpenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); fileMenu.add(fileOpenItem); JMenuItem fileOpenAdjacencyItem = new JMenuItem("Open Adjacency File..."); fileMenu.add(fileOpenAdjacencyItem); JMenuItem fileOpenWeightedAdjacencyItem = new JMenuItem("Open Weighted Adjacency File..."); fileMenu.add(fileOpenWeightedAdjacencyItem); JMenuItem fileOpenXMLItem = new JMenuItem("Open XML File..."); fileMenu.add(fileOpenXMLItem); JMenuItem fileSaveItem = new JMenuItem("Save", KeyEvent.VK_S); fileSaveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); fileMenu.add(fileSaveItem); JMenuItem fileSaveAsItem = new JMenuItem("Save As..."); fileMenu.add(fileSaveAsItem); JMenuItem fileSaveSimpleItem = new JMenuItem("Save Simple Graph..."); fileMenu.add(fileSaveSimpleItem); JMenuItem fileSaveXMLItem = new JMenuItem("Save XML File..."); fileMenu.add(fileSaveXMLItem); JMenuItem filePNGItem = new JMenuItem("Export to png"); fileMenu.add(filePNGItem); JMenuItem fileExitItem = new JMenuItem("Exit", KeyEvent.VK_X); fileExitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK)); fileMenu.add(fileExitItem); fileExitItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileExit(); } }); fileNewItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileNew(); } }); fileOpenItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileOpen(); } }); fileOpenXMLItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileOpenXML(); } }); fileSaveItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileSave(); } }); fileSaveAsItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileSaveAs(); } }); fileSaveSimpleItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileSaveSimple(); } }); fileSaveXMLItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { fileSaveXML(); } }); filePNGItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { filePNG(); } }); // Edit Menu JMenu editMenu = new JMenu("Edit"); editMenu.setMnemonic(KeyEvent.VK_E); menuBar.add(editMenu); JMenuItem editNodesItem = new JMenuItem("Edit Selected Nodes...", KeyEvent.VK_N); editNodesItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.SHIFT_MASK)); editMenu.add(editNodesItem); JMenuItem editEdgesItem = new JMenuItem("Edit Selected Edges...", KeyEvent.VK_E); editEdgesItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.SHIFT_MASK)); editMenu.add(editEdgesItem); JMenuItem editEdgeTypesItem = new JMenuItem("Edit Edge Types..."); editMenu.add(editEdgeTypesItem); JMenuItem editNodeTypesItem = new JMenuItem("Edit Node Types..."); editMenu.add(editNodeTypesItem); JMenuItem editMoveGraphItem = new JMenuItem("Move Graph..."); editMenu.add(editMoveGraphItem); JMenuItem editAddEdgeBendItem = new JMenuItem("Add Edge Bend"); editMenu.add(editAddEdgeBendItem); JMenuItem editRemoveEdgeBendsItem = new JMenuItem("Remove Edge Bends"); editMenu.add(editRemoveEdgeBendsItem); JMenuItem editSelectAllItem = new JMenuItem("Select All", KeyEvent.VK_A); editSelectAllItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); editMenu.add(editSelectAllItem); editNodesItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.editNodes(gp.getSelection().getNodes()); } }); editEdgesItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.editEdges(gp.getSelection().getEdges()); } }); editEdgeTypesItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.editEdgeTypes(); } }); editNodeTypesItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.editNodeTypes(); } }); editMoveGraphItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.moveGraph(); } }); editAddEdgeBendItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.addEdgeBend(); } }); editRemoveEdgeBendsItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { gp.removeEdgeBends(); } }); editSelectAllItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { editSelectAll(); } }); // View Menu JMenu viewMenu = new JMenu("View"); viewMenu.setMnemonic(KeyEvent.VK_V); menuBar.add(viewMenu); for (GraphView v : gp.getGraphViewList()) { JMenuItem menuItem = new JMenuItem(v.getMenuText(), v.getMnemonicKey()); menuItem.setAccelerator(KeyStroke.getKeyStroke(v.getAcceleratorKey(), 0)); menuItem.addActionListener(this); viewMenu.add(menuItem); } // Experiment Menu JMenu experimentsMenu = new JMenu("Experiments"); experimentsMenu.setMnemonic(KeyEvent.VK_E); menuBar.add(experimentsMenu); for (GraphExperiment ge : gp.getGraphExperimentList()) { JMenuItem menuItem = new JMenuItem(ge.getMenuText(), ge.getMnemonicKey()); menuItem.setAccelerator(KeyStroke.getKeyStroke(ge.getAcceleratorKey(), 0)); menuItem.addActionListener(this); experimentsMenu.add(menuItem); } // Utilities Menu JMenu utilitiesMenu = new JMenu("Utilities"); utilitiesMenu.setMnemonic(KeyEvent.VK_U); menuBar.add(utilitiesMenu); for (GraphUtility u : gp.getGraphUtilityList()) { JMenuItem menuItem = new JMenuItem(u.getMenuText(), u.getMnemonicKey()); menuItem.setAccelerator(KeyStroke.getKeyStroke(u.getAcceleratorKey(), 0)); menuItem.addActionListener(this); utilitiesMenu.add(menuItem); } JMenu layoutMenu = new JMenu("Layout"); layoutMenu.setMnemonic(KeyEvent.VK_L); menuBar.add(layoutMenu); for (GraphDrawer d : gp.getGraphDrawerList()) { JMenuItem menuItem = new JMenuItem(d.getMenuText(), d.getMnemonicKey()); menuItem.setAccelerator(KeyStroke.getKeyStroke(d.getAcceleratorKey(), 0)); menuItem.addActionListener(this); layoutMenu.add(menuItem); } }
public static void main(String args[]) throws Exception { final JFrame frame = new JFrame(); final JTextArea textArea = new JTextArea(30, 60); final JScrollPane scrollPane = new JScrollPane(textArea); frame.getContentPane().add(scrollPane); JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenu menu = new JMenu("File"); ScreenCapture.createImage(menu, "menu.jpg"); menuBar.add(menu); JMenuItem menuItem = new JMenuItem("Frame Image"); menu.add(menuItem); menuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { // Let the menu close and repaint itself before taking the image new Thread() { public void run() { try { Thread.sleep(50); System.out.println("Creating frame.jpg"); frame.repaint(); ScreenCapture.createImage(frame, "frame.jpg"); } catch (Exception exc) { System.out.println(exc); } } }.start(); }; }); final JButton button = new JButton("Create Images"); button.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { try { System.out.println("Creating desktop.jpg"); ScreenCapture.createDesktopImage("desktop.jpg"); System.out.println("Creating frame.jpg"); ScreenCapture.createImage(frame, "frame.jpg"); System.out.println("Creating scrollpane.jpg"); ScreenCapture.createImage(scrollPane, "scrollpane.jpg"); System.out.println("Creating textarea.jpg"); ScreenCapture.createImage(textArea, "textarea.jpg"); System.out.println("Creating button.jpg"); ScreenCapture.createImage(button, "button.jpg"); button.setText("button refreshed"); button.paintImmediately(button.getBounds()); System.out.println("Creating refresh.jpg"); ScreenCapture.createImage(button, "refresh.jpg"); System.out.println("Creating region.jpg"); Rectangle r = new Rectangle(0, 0, 100, 16); ScreenCapture.createImage(textArea, r, "region.png"); } catch (Exception exc) { System.out.println(exc); } } }); frame.getContentPane().add(button, BorderLayout.SOUTH); try { FileReader fr = new FileReader("ScreenCapture.java"); BufferedReader br = new BufferedReader(fr); textArea.read(br, null); br.close(); } catch (Exception e) { } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); }
/** *********** Initialization of every component and variable being used ************* */ IPToolKit() { cp = new Container(); cp.setLayout(new BorderLayout()); Main_pnl = new JPanel(); jmb = new JMenuBar(); m_File = new JMenu("File"); m_Arith = new JMenu("Arithmetic"); m_Filter = new JMenu("Filters"); m_Open = new JMenuItem("Open"); m_Save = new JMenuItem("Save"); m_Exit = new JMenuItem("Exit"); m_Add = new JMenu("Add"); m_Sub = new JMenu("Subtract"); m_Mul = new JMenu("Multiply"); m_Div = new JMenu("Divide"); edge = new JMenu("Edge Detection"); mpre = new JMenu("Prewits"); msob = new JMenu("Sobel"); lbl_img = new JLabel(""); lbl_gray = new JLabel(""); lbl_res = new JLabel(""); jfc = new JFileChooser(); panel_image = new JPanel(); panel_gray = new JPanel(); panel_result = new JPanel(); scrollPane = new JScrollPane(); mAddConst = new JMenu("Constant"); mSubConst = new JMenu("Constant"); mMulConst = new JMenu("Constant"); mDivConst = new JMenu("Constant"); mAddSat = new JMenuItem("Saturation"); mAddWrap = new JMenuItem("Wrap Around"); mSubSat = new JMenuItem("Saturation"); mSubWrap = new JMenuItem("Wrap Around"); mMulSat = new JMenuItem("Saturation"); mMulWrap = new JMenuItem("Wrap Around"); mDivSat = new JMenuItem("Saturation"); mDivWrap = new JMenuItem("Wrap Around"); mAddImg = new JMenuItem("Image"); mSubImg = new JMenuItem("Image"); mMulImg = new JMenuItem("Image"); mDivImg = new JMenuItem("Image"); mlowPass = new JMenuItem("Low Pass"); mhighPass = new JMenuItem("High Pass"); mhighBoost = new JMenuItem("High Boost"); median = new JMenuItem("Median"); mBright = new JMenuItem("Brightness"); mContrast = new JMenuItem("Contrast Stretch"); mThreshold = new JMenuItem(" Threshold "); m_Enhance = new JMenu("Enhancement"); mInvert = new JMenuItem("Negative"); mpre_hor = new JMenuItem("Prewits Horizontal"); mpre_ver = new JMenuItem("Prewits Vertical"); mpre_both = new JMenuItem("Prewits Both"); msob_hor = new JMenuItem("Sobel Horizontal"); msob_ver = new JMenuItem("Sobel Vertical"); msob_both = new JMenuItem("Sobel Both"); ; mrob = new JMenuItem("Roberts"); mean = new JMenuItem("Mean"); mlap = new JMenuItem("Laplacian"); other = new JMenu("Other"); hist = new JMenuItem("Histogram Equalization"); conect = new JMenuItem("Connected Component"); mBlend = new JMenuItem("Blending"); vsb = new JScrollBar(JScrollBar.VERTICAL); hsb = new JScrollBar(JScrollBar.HORIZONTAL); // jsp = new JScrollPane(); setJMenuBar(jmb); add(cp); // setBackground(new Color(255,255,255)); panel_image.setBackground(new Color(255, 0, 0)); panel_gray.setBackground(new Color(0, 255, 0)); panel_result.setBackground(new Color(0, 0, 255)); jmb.add(m_File); jmb.add(m_Arith); jmb.add(m_Enhance); jmb.add(m_Filter); jmb.add(edge); jmb.add(other); cp.add(Main_pnl); Main_pnl.setLayout(new GridLayout(1, 3, 10, 10)); Main_pnl.add(panel_image); Main_pnl.add(panel_gray); Main_pnl.add(panel_result); m_File.add(m_Open); m_File.add(m_Save); m_File.add(m_Exit); m_Arith.add(m_Add); m_Add.add(mAddImg); m_Add.add(mAddConst); mAddConst.add(mAddSat); mAddConst.add(mAddWrap); m_Arith.add(m_Sub); m_Sub.add(mSubImg); m_Sub.add(mSubConst); mSubConst.add(mSubSat); mSubConst.add(mSubWrap); m_Arith.add(m_Mul); m_Mul.add(mMulImg); m_Mul.add(mMulConst); mMulConst.add(mMulSat); mMulConst.add(mMulWrap); m_Arith.add(m_Div); m_Div.add(mDivImg); m_Div.add(mDivConst); mDivConst.add(mDivSat); mDivConst.add(mDivWrap); m_Filter.add(mlowPass); m_Filter.add(mhighPass); m_Filter.add(mhighBoost); m_Filter.add(median); m_Filter.add(mean); edge.add(mpre); edge.add(msob); mpre.add(mpre_hor); mpre.add(mpre_ver); mpre.add(mpre_both); msob.add(msob_hor); msob.add(msob_ver); msob.add(msob_both); edge.add(mrob); edge.add(mlap); m_Enhance.add(mBright); m_Enhance.add(mContrast); m_Enhance.add(mThreshold); m_Enhance.add(mInvert); m_Enhance.add(mBlend); other.add(hist); other.add(conect); m_Open.addActionListener(this); m_Save.addActionListener(this); m_Exit.addActionListener(this); mAddImg.addActionListener(this); mSubImg.addActionListener(this); mMulImg.addActionListener(this); mDivImg.addActionListener(this); mAddSat.addActionListener(this); mAddWrap.addActionListener(this); mSubSat.addActionListener(this); mSubWrap.addActionListener(this); mMulSat.addActionListener(this); mMulWrap.addActionListener(this); mDivSat.addActionListener(this); mDivWrap.addActionListener(this); mlowPass.addActionListener(this); mhighPass.addActionListener(this); mhighBoost.addActionListener(this); median.addActionListener(this); mBright.addActionListener(this); mContrast.addActionListener(this); mThreshold.addActionListener(this); mInvert.addActionListener(this); mBlend.addActionListener(this); mpre_hor.addActionListener(this); mpre_ver.addActionListener(this); mpre_both.addActionListener(this); msob_hor.addActionListener(this); msob_ver.addActionListener(this); msob_both.addActionListener(this); mrob.addActionListener(this); mean.addActionListener(this); mlap.addActionListener(this); hist.addActionListener(this); conect.addActionListener(this); lbl_gray.addMouseListener(this); panel_image.add(lbl_img); panel_gray.add(lbl_gray); panel_result.add(lbl_res); cp.add(vsb, BorderLayout.EAST); cp.add(hsb, BorderLayout.SOUTH); // cp1 = getContentPane(); cp = getContentPane(); setSize(600, 400); setVisible(true); }
public ImageProcessingFrame() { setTitle("ImageProcessingTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); add( new JComponent() { public void paintComponent(Graphics g) { if (image != null) g.drawImage(image, 0, 0, null); } }); JMenu fileMenu = new JMenu("File"); JMenuItem openItem = new JMenuItem("Open"); openItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { openFile(); } }); fileMenu.add(openItem); JMenuItem exitItem = new JMenuItem("Exit"); exitItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); fileMenu.add(exitItem); JMenu editMenu = new JMenu("Edit"); JMenuItem blurItem = new JMenuItem("Blur"); blurItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { float weight = 1.0f / 9.0f; float[] elements = new float[9]; for (int i = 0; i < 9; i++) elements[i] = weight; convolve(elements); } }); editMenu.add(blurItem); JMenuItem sharpenItem = new JMenuItem("Sharpen"); sharpenItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { float[] elements = {0.0f, -1.0f, 0.0f, -1.0f, 5.f, -1.0f, 0.0f, -1.0f, 0.0f}; convolve(elements); } }); editMenu.add(sharpenItem); JMenuItem brightenItem = new JMenuItem("Brighten"); brightenItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { float a = 1.1f; // float b = 20.0f; float b = 0; RescaleOp op = new RescaleOp(a, b, null); filter(op); } }); editMenu.add(brightenItem); JMenuItem edgeDetectItem = new JMenuItem("Edge detect"); edgeDetectItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { float[] elements = {0.0f, -1.0f, 0.0f, -1.0f, 4.f, -1.0f, 0.0f, -1.0f, 0.0f}; convolve(elements); } }); editMenu.add(edgeDetectItem); JMenuItem negativeItem = new JMenuItem("Negative"); negativeItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { short[] negative = new short[256 * 1]; for (int i = 0; i < 256; i++) negative[i] = (short) (255 - i); ShortLookupTable table = new ShortLookupTable(0, negative); LookupOp op = new LookupOp(table, null); filter(op); } }); editMenu.add(negativeItem); JMenuItem rotateItem = new JMenuItem("Rotate"); rotateItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { if (image == null) return; AffineTransform transform = AffineTransform.getRotateInstance( Math.toRadians(5), image.getWidth() / 2, image.getHeight() / 2); AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BICUBIC); filter(op); } }); editMenu.add(rotateItem); JMenuBar menuBar = new JMenuBar(); menuBar.add(fileMenu); menuBar.add(editMenu); setJMenuBar(menuBar); }
/** Constructor to set everything up */ public TicTac() { // Set defaults before settings are changed via menus // (defaults are vs AI, play as X, with graphics on) multiPlayers = false; temp = false; currentPlayer = Symbol.X; ai = Symbol.O; difficulty = Difficulty.IMPOSSIBLE; frame = new JFrame("Tic Tac Toe"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); // Set preferred size so game fills window nicely this.setPreferredSize(new Dimension(cellSize * ROWS, cellSize * COLS)); frame.add(this); // Load images try { sword = ImageIO.read(new File("swordsBlue.png")); saber = ImageIO.read(new File("saber2.png")); skull = ImageIO.read(new File("skull.png")); ring = ImageIO.read(new File("ring.png")); smiley = ImageIO.read(new File("smiley.png")); hydra = ImageIO.read(new File("hydra.png")); finalfantasy = ImageIO.read(new File("finalfantasy.jpg")); dragon = ImageIO.read(new File("dargon.jpg")); night = ImageIO.read(new File("night.jpg")); } catch (IOException e) { System.out.println("Could not open image files, turning images off!"); useImages = false; } imageX = saber; imageO = ring; background = dragon; // Create menu bars. Each one item will need a listener menuBar = new JMenuBar(); JMenu menu = new JMenu("Mode"); JMenu menu2 = new JMenu("Side"); JMenu menu3 = new JMenu("Graphics"); JMenu menu4 = new JMenu("Other"); JMenu menu5 = new JMenu("Difficulty"); JMenu xImageMenu = new JMenu("Image for X"); JMenu oImageMenu = new JMenu("Image for O"); JMenu backgroundMenu = new JMenu("Set Background"); menuBar.add(menu); menuBar.add(menu2); menuBar.add(menu5); menuBar.add(menu3); menuBar.add(menu4); // Create checkbox menu items for choices final JCheckBoxMenuItem item = new JCheckBoxMenuItem("2 Player"); final JCheckBoxMenuItem item2 = new JCheckBoxMenuItem("VS Computer"); final JCheckBoxMenuItem item3 = new JCheckBoxMenuItem("Play as X"); final JCheckBoxMenuItem item4 = new JCheckBoxMenuItem("Play as O"); final JCheckBoxMenuItem item5 = new JCheckBoxMenuItem("On"); final JCheckBoxMenuItem item6 = new JCheckBoxMenuItem("Off"); JMenuItem item7 = new JMenuItem("Restart"); JMenuItem item8 = new JMenuItem("Exit"); final JCheckBoxMenuItem item9 = new JCheckBoxMenuItem("Easy"); final JCheckBoxMenuItem item10 = new JCheckBoxMenuItem("Hard"); final JCheckBoxMenuItem item11 = new JCheckBoxMenuItem("Impossible"); final JCheckBoxMenuItem itemSword = new JCheckBoxMenuItem("Sword"); final JCheckBoxMenuItem itemSaber = new JCheckBoxMenuItem("Sabers"); final JCheckBoxMenuItem itemSkull = new JCheckBoxMenuItem("Skull"); final JCheckBoxMenuItem itemRing = new JCheckBoxMenuItem("One Ring"); final JCheckBoxMenuItem itemSmiley = new JCheckBoxMenuItem("Red Smiley"); final JCheckBoxMenuItem itemHydra = new JCheckBoxMenuItem("Hydra"); final JCheckBoxMenuItem itemDragon = new JCheckBoxMenuItem("Dragon"); final JCheckBoxMenuItem itemFinalFantasy = new JCheckBoxMenuItem("Final Fantasy 7"); final JCheckBoxMenuItem itemNight = new JCheckBoxMenuItem("Nighttime"); // Set the initial checkboxes to true (for play vs ai, as X, with graphics on) item2.setSelected(true); item3.setSelected(true); item5.setSelected(true); item11.setSelected(true); itemSaber.setSelected(true); itemRing.setSelected(true); itemDragon.setSelected(true); // Play against friend item.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { item.setSelected(true); item2.setSelected(false); multiPlayers = true; repaint(); } }); menu.add(item); // Checkbox for Selecting to play against AI item2.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { item2.setSelected(true); item.setSelected(false); if (currentPlayer == Symbol.X) ai = Symbol.O; else ai = Symbol.X; item3.setSelected(true); item4.setSelected(false); multiPlayers = false; } }); menu.add(item2); // Play as X item3.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // use temp variable to move after assigning symbols if (item4.getState() && !multiPlayers) temp = true; item3.setSelected(true); item4.setSelected(false); currentPlayer = Symbol.X; ai = Symbol.O; if (temp) aiMove(); repaint(); temp = false; } }); menu2.add(item3); // Play as O item4.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (item3.getState() && !multiPlayers) temp = true; item4.setSelected(true); item3.setSelected(false); currentPlayer = Symbol.O; ai = Symbol.X; if (temp) aiMove(); repaint(); temp = false; } }); menu2.add(item4); // Turn Graphics on item5.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { item5.setSelected(true); item6.setSelected(false); useImages = true; repaint(); } }); menu3.add(item5); // Turn Graphics off item6.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { item5.setSelected(false); item6.setSelected(true); useImages = false; repaint(); } }); menu3.add(item6); menu3.addSeparator(); menu3.add(xImageMenu); menu3.add(oImageMenu); menu3.add(backgroundMenu); // Choose Saber for X itemSaber.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemSword.setSelected(false); itemSaber.setSelected(true); itemSkull.setSelected(false); imageX = saber; repaint(); } }); xImageMenu.add(itemSaber); // Choose Sword for X itemSword.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemSword.setSelected(true); itemSaber.setSelected(false); itemSkull.setSelected(false); imageX = sword; repaint(); } }); xImageMenu.add(itemSword); // Choose Skull for X itemSkull.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemSword.setSelected(false); itemSaber.setSelected(false); itemSkull.setSelected(true); imageX = skull; repaint(); } }); xImageMenu.add(itemSkull); // Choose ring for O itemRing.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemRing.setSelected(true); itemSmiley.setSelected(false); itemHydra.setSelected(false); imageO = ring; repaint(); } }); oImageMenu.add(itemRing); // Choose red smiley for O itemSmiley.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemRing.setSelected(false); itemSmiley.setSelected(true); itemHydra.setSelected(false); imageO = smiley; repaint(); } }); oImageMenu.add(itemSmiley); // Choose hydra for O itemHydra.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemRing.setSelected(false); itemSmiley.setSelected(false); itemHydra.setSelected(true); imageO = hydra; repaint(); } }); oImageMenu.add(itemHydra); // Set dragon as background itemDragon.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemDragon.setSelected(true); itemFinalFantasy.setSelected(false); itemNight.setSelected(false); background = dragon; repaint(); } }); backgroundMenu.add(itemDragon); // Set final fantasy 7 as background itemFinalFantasy.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemDragon.setSelected(false); itemFinalFantasy.setSelected(true); itemNight.setSelected(false); background = finalfantasy; repaint(); } }); backgroundMenu.add(itemFinalFantasy); // Set night as background itemNight.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { itemDragon.setSelected(false); itemFinalFantasy.setSelected(false); itemNight.setSelected(true); background = night; repaint(); } }); backgroundMenu.add(itemNight); // Reset game item7.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { initialize(); } }); menu4.add(item7); // Exit game item8.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); menu4.add(item8); // Difficulty easy item9.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { difficulty = Difficulty.EASY; item9.setSelected(true); item10.setSelected(false); item11.setSelected(false); } }); menu5.add(item9); // Difficulty hard item10.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { difficulty = Difficulty.HARD; item10.setSelected(true); item9.setSelected(false); item11.setSelected(false); } }); menu5.add(item10); // Difficulty impossible item11.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { difficulty = Difficulty.IMPOSSIBLE; item11.setSelected(true); item9.setSelected(false); item10.setSelected(false); } }); menu5.add(item11); // Add Whole menu bar to frame frame.setJMenuBar(menuBar); // Create statusBar (updates will take place in paintComponent) statusBar = new JLabel(" "); statusBar.setFont(new Font(Font.DIALOG_INPUT, Font.BOLD, 15)); statusBar.setBorder(BorderFactory.createEmptyBorder(2, 5, 4, 5)); // Use container variable to set layout and pack everything nicely Container cp = frame.getContentPane(); cp.setLayout(new BorderLayout()); cp.add(this, BorderLayout.CENTER); cp.add(statusBar, BorderLayout.SOUTH); frame.pack(); board = new Symbol[ROWS][COLS]; initialize(); // Add the mouse listener. Use MouseAdapter rather than implement it this.addMouseListener( new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int currentCol = e.getX() / cellSize; int currentRow = e.getY() / cellSize; if (gameStatus == GameStatus.CONTINUE) { // If valid click, and spot is empty, make the move. Then check // to see if game is won. If not, and facing AI, ai moves. // Otherwise switch X and O if (currentRow >= 0 && currentRow < ROWS && currentCol >= 0 && currentCol < COLS && board[currentRow][currentCol] == Symbol.EMPTY) { board[currentRow][currentCol] = currentPlayer; checkState(currentPlayer); if (multiPlayers) currentPlayer = (currentPlayer == Symbol.X) ? Symbol.O : Symbol.X; if (gameStatus == GameStatus.CONTINUE && !multiPlayers) aiMove(); } } else { // Game is over, so re-initialize everything initialize(); } repaint(); } }); }