import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; import javax.swing.*; public class View { private JFrame vindu; private JPanel panel; private Controller kontroller = new Controller(this); private HashMap kortknapper = new HashMap<>(); public void init() { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() ); } catch (Exception e) { System.exit(1); } vindu = new JFrame("Album matching"); vindu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); vindu.setPreferredSize(new Dimension(900, 900)); panel = new JPanel(new GridLayout(2, 4, 5, 5)); Random r = new Random(); ArrayList kortene = kontroller.hentAlleKort(); while (kortene.size() > 0) { String kortNavn = kortene.remove(r.nextInt(kortene.size())); KortKnapp knapp = new KortKnapp(kortNavn); knapp.init(); panel.add(knapp); kortknapper.put(kortNavn, knapp); } vindu.add(panel); vindu.pack(); vindu.setLocationRelativeTo(null); vindu.setVisible(true); } private class KortKnapp extends JButton { private String verdi; public KortKnapp(String v) { verdi = v; addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (!kontroller.hentKortStatus(verdi)) { kontroller.vriKort(verdi); } } }); } public void init() { setBackground(Color.RED); setFont(new Font("SansSerif", Font.BOLD, 20)); setPreferredSize(new Dimension(100, 50)); } public void snu() { boolean erSnudd = kontroller.hentKortStatus(verdi); if (erSnudd) { setBackground(Color.WHITE); setText(verdi); } else { setBackground(Color.RED); setText(""); } } } public void snuKort(String kortNavn) { kortknapper.get(kortNavn).snu(); } public void settVinduTekst(String nyTekst) { vindu.setTitle(nyTekst); } public static void main(String[] args) { View v = new View(); v.init(); } }