diff --git a/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java b/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java index 9028dafb3f60147e55e51303f961487a3e993448..55e3e4c1f541af261afac1c208497154a415568f 100644 --- a/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java +++ b/Obesenec/src/cz/vsb/krouzek/OknoSibenice.java @@ -1,10 +1,12 @@ package cz.vsb.krouzek; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; import java.awt.Insets; import java.awt.image.BufferedImage; import java.io.IOException; @@ -33,9 +35,11 @@ public class OknoSibenice extends JFrame { "sibenice-3.png", "sibenice-4.png", "sibenice-5.png", "sibenice-6.png", "sibenice-7.png", "sibenice-8.png"); private JPanel letterPanel; private JPanel gamePanel; + private JPanel midlePanel; private JButton startButton; private JButton endButton; private JLabel wordLabel; + private JLabel infoLabel; private JLabel imageLabel; private List<JButton> charButtons = new ArrayList<JButton>(); private int mistakeCount = 0; @@ -53,7 +57,7 @@ public class OknoSibenice extends JFrame { initialize(); } - public void initialize() { + private void initialize() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); @@ -62,13 +66,13 @@ public class OknoSibenice extends JFrame { getContentPane().add(getLetterPanel(), BorderLayout.SOUTH); getContentPane().add(getImageLabel(), BorderLayout.EAST); getContentPane().add(getGamePanel(), BorderLayout.NORTH); - getContentPane().add(getWordLabel(), BorderLayout.CENTER); + getContentPane().add(getMidlePanel(), BorderLayout.CENTER); pack(); setVisible(true); } - public JPanel getLetterPanel() { + private JPanel getLetterPanel() { if (letterPanel == null) { letterPanel = new JPanel(new GridBagLayout()); int counter = 1; @@ -94,7 +98,7 @@ public class OknoSibenice extends JFrame { return letterPanel; } - public JLabel getWordLabel() { + private JLabel getWordLabel() { if (wordLabel == null) { wordLabel = new JLabel(""); wordLabel.setHorizontalAlignment(SwingConstants.CENTER); @@ -105,6 +109,22 @@ public class OknoSibenice extends JFrame { return wordLabel; } + private JLabel getInfoLabel() { + if (infoLabel == null) { + infoLabel = new JLabel(""); + infoLabel.setHorizontalAlignment(SwingConstants.CENTER); + Font font = new Font("Curier", Font.BOLD , 20); + infoLabel.setFont(font); + infoLabel.setForeground(Color.RED); + setWorldText(""); + } + return infoLabel; + } + + public void setInfoText(String text) { + infoLabel.setText(text); + } + public void setWorldText(String text) { Pattern p = Pattern.compile("(.)"); Matcher matcher = p.matcher(text); @@ -112,7 +132,7 @@ public class OknoSibenice extends JFrame { getWordLabel().setText(text); } - public JLabel getImageLabel() { + private JLabel getImageLabel() { if (imageLabel == null) { imageLabel = new JLabel(""); updateImage(); @@ -131,6 +151,9 @@ public class OknoSibenice extends JFrame { private void updateImage() { try { + if(mistakeCount >= imageNames.size()) { + mistakeCount = imageNames.size()-1; + } BufferedImage image = ImageIO.read(this.getClass().getResourceAsStream("images/"+imageNames.get(mistakeCount))); imageLabel.setIcon(new ImageIcon(image)); } catch (IOException e) { @@ -138,7 +161,7 @@ public class OknoSibenice extends JFrame { } } - public JButton getStartButton() { + private JButton getStartButton() { if (startButton == null) { startButton = new JButton("Start"); startButton.addActionListener(e -> { @@ -149,22 +172,31 @@ public class OknoSibenice extends JFrame { return startButton; } - public JButton getEndButton() { + private JButton getEndButton() { if (endButton == null) { endButton = new JButton("End"); endButton.addActionListener(e -> { - zakazTlacitkaPismenek(); + zakazTlacitkaPismenek(true); konecHry.run(); }); } return endButton; } - public void zakazTlacitkaPismenek() { - charButtons.forEach(b -> b.setEnabled(false)); + public void zakazTlacitkaPismenek(boolean zakazat) { + charButtons.forEach(b -> b.setEnabled(!zakazat)); } - public JPanel getGamePanel() { + private JPanel getMidlePanel() { + if (midlePanel == null) { + // HornĂ panel s tlaÄŤĂtky start a end + midlePanel = new JPanel(new GridLayout(2,1)); + midlePanel.add(getWordLabel()); + midlePanel.add(getInfoLabel()); + } + return midlePanel; + } + private JPanel getGamePanel() { if (gamePanel == null) { // HornĂ panel s tlaÄŤĂtky start a end gamePanel = new JPanel(new FlowLayout());