Mam tylko 6 - 7 tygodni na naukę Java, więc z góry przepraszam, jeśli mój kod jest niechlujny lub terminologia jest wyłączona. Próbuję stworzyć program, który tworzy losową liczbę i pozwala użytkownikowi odgadnąć, dopóki nie uzyska prawidłowej liczby. Nie służy to żadnemu celowi, poza uczeniem się.Java - gra liczbowa - wiele ActionListener w tej samej klasie
Mam podstawowy program działa, chcę tylko dodać inne elementy, aby go poprawić i zdobyć doświadczenie.
Program działa w ramce JFrame i ma pole JTextField, w którym użytkownik może wprowadzić swoje domysły. Mam konfigurację ActionListener dla JTextField. Chciałbym dodać przycisk Start, który wyświetla się na początku gry. Kiedy użytkownik kliknie przycisk Start, JTextField powinien stać się aktywny. Ponadto, gdy użytkownik kliknie zgaduje poprawną odpowiedź, chciałbym użyć przycisku start, aby zresetować program. Eksperymentowałem z kilkoma sposobami, aby to zrobić bez powodzenia. Wierzę, że będzie to wymagało wielu ActionListenerów w tej samej klasie. Nie jestem nawet pewien, czy to możliwe?
Oto mój kod. Z góry dziękuję za pomoc.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class JMyFrame2 extends JFrame implements ActionListener {
Random num = new Random();
int computerGenerated = num.nextInt(1000);
public int userSelection;
JTextField numberField = new JTextField(10);
JLabel label1 = new JLabel();
Container con = getContentPane();
int previousGuess;
// constructor for JMyFrame
public JMyFrame2(String title) {
super(title);
setSize(750, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label1 = new JLabel(
"I have a number between 1 and 1000 can you guess my number?" + "Please enter a number for your first guess and then hit Enter.");
setLayout(new FlowLayout());
add(numberField);
add(label1);
System.out.println(computerGenerated);
numberField.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
userSelection = Integer.parseInt(numberField.getText());
con.setBackground(Color.red);
if (userSelection == computerGenerated) {
label1.setText("You are correct");
con.setBackground(Color.GREEN);
} else if (userSelection > computerGenerated) {
label1.setText("You are too high");
} else if (userSelection < computerGenerated) {
label1.setText("You are too low");
}
}
}
public class JavaProgram5 {
public static void main(String[] args) {
JMyFrame2 frame2 = new JMyFrame2("Assignment 5 - Number Guessing Game");
frame2.setVisible(true);
}
}
Istnieje kilka różnych sposobów wdrożenia opcji "restartuj" w swoim programie. Czy możesz wyjaśnić, z którą częścią masz problem? –