Резюме из моего последнего вопроса, я 15-летний новичок в сообществе stackoverflow. В настоящее время я пытаюсь самостоятельно разработать игру Rock Paper Scissors с использованием java. Я думал, что работа над этим проектом будет полезным опытом, который поможет мне изучить Java и ее основы. Я немного новичок в языке программирования java, поэтому, пожалуйста, не критикуйте меня, я медленно учусь методом проб и ошибок. Для этого конкретного проекта я решил использовать Eclipse, поскольку мне нравится его пользовательский интерфейс больше, чем в других IDE. В любом случае, я решил внедрить JPanel, чтобы сделать игру более наглядной. Мой код выглядит следующим образом: скопирован и вставлен из моего проекта eclipse:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class prompt extends JPanel implements ActionListener {
public static void main(String []args) {
JPanel panel = new JPanel();
JButton rockButton = new JButton("ROCK");
JButton scissorsButton = new JButton("SCISSORS");
JButton paperButton = new JButton("PAPER");
JFrame choicePrompt = new JFrame("Rock, Paper, Scissors Game");
choicePrompt.add(panel);
choicePrompt.setSize(300, 300);
choicePrompt.setVisible(true);
panel.add(rockButton);
panel.add(scissorsButton);
panel.add(paperButton);
rockButton.addActionListener(new ActionListener() {
public void rockChosen(ActionEvent r)
{
JLabel rock = new JLabel("You have chosen Rock!");
panel.add(rock);
}
}
scissorsButton.addActionListener(new ActionListener() {
public void scissorsChosen(ActionEvent s)
{
JLabel scissors = new JLabel("You have chosen Scissors!");
panel.add(scissors);
}
}
paperButton.addActionListener(new ActionListener() {
public void paperChosen(ActionEvent p)
{
JLabel paper = new JLabel("You have chosen Paper!");
panel.add(paper);
}
}
}
}
Что не так с моими ActionListeners при добавлении кнопок в JPanel? Я хочу, чтобы эта программа работала так, чтобы когда пользователь щелкал по камню, бумаге или ножницам, он отображал JLabel для его решения. Все остальные "тряпки" я могу сделать сам.
2 ответа
Ваш код не должен даже компилироваться, и если это так, и вы обращаетесь сюда за помощью, вам необходимо сообщить нам об этом и опубликовать все сообщения об ошибках компиляции, указав, какая строка их вызывает. Рекомендации:
- Не позволяйте вашему классу расширять ActionListener.
- Дайте каждой JButton анонимный внутренний класс, аналогичный тому, что вы делаете, но который компилируется и имеет метод actionPerformed.
- Внутри этого метода не добавляйте новый JLabel в свой графический интерфейс, поскольку нет смысла добавлять новые компоненты при нажатии кнопки. Вместо этого вызовите actionPerformed
setText(...)
для JLabel, который уже является частью вашего графического интерфейса. - Начните с заглавной буквы в имени вашего класса, чтобы соответствовать стандартам именования Java.
Вы не реализовали ActionLIstener должным образом, в этом интерфейсе есть метод actionPerformed (ActionEvent e), попробуйте это (для всех ваших слушателей):
paperButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JLabel paper = new JLabel("You have chosen Paper!");
panel.add(paper);
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
panel.revalidate()
иpanel.repaint()
после добавления любогоJLabel
вJPanel
.ActionListener
неправильно реализован в вашем коде. где реализован методactionPerformed()