I want have a validation in my input. I want that only numbers are allowed in the input. How can I do that? Also I want to split the code of my GUI and gameplay in two classes. Whatever I try, I get keeping errors when I try to split it. I put my code in code snippet. This is my code:
package RaadGetal;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.util.Random;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GuessGame extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel guessLabel1;
private JTextField guessField;
private JButton guessButton;
private JPanel northPanel;
private JPanel southPanel;
private Random random = new Random();
private int number;
public GuessGame() {
super("Raad het getal");
ButtonListener submitListener = new ButtonListener();
this.getContentPane().setLayout(new BorderLayout());
northPanel = new JPanel(new FlowLayout());
guessLabel1 = new JLabel("Raad een getal tussen 1 en 100");
northPanel.add(guessLabel1);
guessField = new JTextField(3);
northPanel.add(guessField);
add(northPanel, BorderLayout.NORTH);
southPanel = new JPanel(new GridLayout(2, 2));
guessButton = new JButton("Raad");
guessButton.addActionListener(submitListener);
southPanel.add(guessButton);
add(southPanel, BorderLayout.SOUTH);
number = 1 + random.nextInt(100);
}
public static void main(String args[]) {
GuessGame aGame = new GuessGame();
aGame.setTitle("Raad Getal");
aGame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aGame.setSize(300, 150);
aGame.setVisible(true);
}
public class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String guessString;
int guessNumber;
if (event.getSource() == guessButton) {
guessString = guessField.getText();
guessNumber = Integer.parseInt(guessString);
if (guessNumber == number) {
guessField.setVisible(false);
guessLabel1.setText("Gefeliciteerd, je hebt het juiste getal geraden!");
} else {
if (guessNumber > number)
guessLabel1.setText("Te hoog!");
else
guessLabel1.setText("Te laag!");
}
}
}
}
}