我只是搞乱Java上的按钮,我只想创建一个非常简单的“Cookie Clicker”的愚蠢版本但是,监听器类中的if语句不能正常工作。 主类代码:
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class CookieClickerGame {
private static final int FRAME_WIDTH = 200;
private static final int FRAME_HEIGHT = 200;
public static void main(String[] args) {
JPanel panel = new JPanel();
JFrame frame = new JFrame();
JButton cookie = new JButton("Cookie");
JButton grandma = new JButton("Grandma");
panel.add(cookie);
panel.add(grandma);
frame.add(panel);
ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);
ActionListener listener2 = new CookieClicker();
grandma.addActionListener(listener2);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
听众类代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class CookieClicker implements ActionListener {
int cookies;
public void actionPerformed(ActionEvent event) {
if (event.getActionCommand().equals("Cookie")) {
cookies++;
System.out.println(cookies + " Cookies");
} else if (event.getActionCommand().equals("Grandma") && cookies >= 10) {
System.out.println("+1 Grandma");
} else {
JOptionPane.showMessageDialog (null, "Not Enough Cookies", "You're Poor", JOptionPane.INFORMATION_MESSAGE);
}
}
}
我的问题在于Grandma
部分,没有任何东西出现过“+1奶奶”,即使我有足够的饼干,它仍会告诉我,我太穷了。代码有什么问题?
答案 0 :(得分:3)
您有两个不同的CookieClicker实例。使用静态成员或让侦听者的动作更新祖母的cookie值。
如果您使用后一个选项,您可能有两个单独的类,CookieClicker和GrandmaClicker。然后CookieClicker.actionPerformed()
可以致电GrandmaClicker.IncrementCookies()
或类似。
答案 1 :(得分:1)
更改:
int cookies;
到:
static int cookies;
因此,您拥有所有对象的唯一Cookie字段,并且每次执行操作时都会更改。使用第一个或第二个按钮。
答案 2 :(得分:1)
将cookies计数器更改为静态:
static int cookies;
答案 3 :(得分:0)
ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);
ActionListener listener2 = new CookieClicker();
grandma.addActionListener(listener2);
您正在为按钮创建两个不同的侦听器。
单击第一个按钮时会通知 listener
,单击第二个按钮时会通知listener2
。
只需对两个按钮使用相同的侦听器:
ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);
grandma.addActionListener(listener);