gpt4 book ai didi

java - 向 jbutton 添加 Action 监听器

转载 作者:行者123 更新时间:2023-12-01 20:07:56 26 4
gpt4 key购买 nike

首先,我不是一个经验丰富的程序员或类似的人,我正在尝试制作一个简单的 java 按钮和一条文本来告诉您按了该按钮多少次,这是代码远:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;


public class cookieClicker {
private static void cookies() {
int a = 0;
JFrame cookie = new JFrame("Cookie Counter");
cookie.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton clickCookies = new JButton("Cookies!!");
clickCookies.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
a++;
}

} );


if ( a == 0 ) {
JLabel text1 = new JLabel("You have no cookies you fat twat!", SwingConstants.CENTER);
text1.setPreferredSize(new Dimension(400, 150));
cookie.getContentPane().add(text1, BorderLayout.CENTER);
}
else {
if ( a == 1 ) {
JLabel text2 = new JLabel("You have " + a + " cookie", SwingConstants.CENTER);
text2.setPreferredSize(new Dimension(400, 150));
cookie.getContentPane().add(text2, BorderLayout.CENTER);
}
else {
JLabel text3 = new JLabel("You have " + a + " cookies", SwingConstants.CENTER);
text3.setPreferredSize(new Dimension(400, 150));
cookie.getContentPane().add(text3, BorderLayout.CENTER);
}
}
clickCookies.setBounds(50,100,95,30);
cookie.add(clickCookies);
cookie.setLocationRelativeTo(null);
cookie.setLayout(new FlowLayout() );
cookie.pack();
cookie.setVisible(true);
}
public static void main(String[] args) {

cookies();

}
}

编译时返回:

cookieClicker.java:15: error: local variables referenced from an inner class must be final or effectively final
a++;
^

最佳答案

关于您的问题:您需要将计数(a)存储在字段中,而不是存储在局部变量中。

但是你的代码显示出对事件和监听器原理的一个很大的误解。您试图在创建 JFrame 之后立即获取点击次数,甚至在将其设置为可见之前。这是没有意义的。用户当时怎么可能点击了按钮呢?您需要从监听器本身更改标签的文本(而不是每次添加新标签):单击按钮时,显示的文本会更改。这就是 actionPerformed 方法的作用:对按钮单击使用react。

官方Swing tutorial有大量示例和解释显示

  • 如何启动应用程序
  • 如何使用代表 JFrame 的类,而不是在静态方法中执行任何操作
  • 如何使用监听器
  • 如何布局组件

阅读它们,因为你确实没有以良好的方式做事。

关于java - 向 jbutton 添加 Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com