import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Memory { private JFrame frame; private Container contentPane; private MemoryBoard board; /** * Create a memory game and show it on the screen. * @throws InterruptedException */ public Memory() throws InterruptedException { makeFrame(); makeMenuBar(frame); } /** * Create the swing frame and its contents. */ private void makeFrame() throws InterruptedException { frame = new JFrame("Memory"); contentPane = frame.getContentPane(); contentPane.setLayout(new GridLayout(4, 2)); board = new MemoryBoard(); MemoryCard[] cards = board.generateCards(); for (int i = 0; i < (2 * board.getNumberOfCards()); i++) { contentPane.add(cards[i]); cards[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { MemoryCard c = (MemoryCard) e.getSource(); if (!c.isBlank()) { if (board.isFirstCard(c)) { c.turnCard(); } else { c.turnCard(); long wait = System.currentTimeMillis(); while(System.currentTimeMillis() - wait < 2000) { // gör saker som ska göras medan man väntar... kanske uppdatera animation eller nåt } try { // Thread.sleep(2000); } catch (Exception ex) { System.err.println("Thread was interrupted"); } if ((c != board.getFirstCard()) && board.compareCards(c)) { c.setBlank(); board.getFirstCard().setBlank(); board.resetFirstCard(); } else { board.getFirstCard().turnCard(); board.resetFirstCard(); c.turnCard(); } } } } }); } frame.pack(); frame.setVisible(true); } public static void main(String args[]) throws InterruptedException { new Memory(); } private void makeMenuBar(JFrame frame) { JMenuBar menubar = new JMenuBar(); frame.setJMenuBar(menubar); JMenu menu; JMenuItem item; menu = new JMenu("File"); menubar.add(menu); item = new JMenuItem("New Game"); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //do something } }); menu.add(item); } }