gpt4 book ai didi

java - 如何更改此应用程序的 JLabel 中的文本?

转载 作者:行者123 更新时间:2023-12-01 17:28:04 25 4
gpt4 key购买 nike

我正在尝试用java编写一个简单的按钮点击计数器,它应该已经完成​​,但是当我运行它时,当我单击第33行中的JLabel测试更改时,它似乎出现了问题按钮应用程序崩溃。我如何解决它;我做错了什么?这是代码:

package Main;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Eventos extends JFrame{

JTextField clicksCounter;
Eventos (){
//Parámetros generales de la ventana.
super("Eventos en Java");//Titulo de la ventana.
setSize(320,200);//Tamaño de la ventana.
setVisible(true);//Configurar como visible.
setLocation(520,220);//Posicion inicial de la ventana en el medio y un poco arriba.
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//Salir al cerrrar la venta.
this.setLayout(new GridLayout(2,1));
//Componentes dentro de la ventana.
JButton ClickMe = new JButton("Haz Click aqui!");//Boton que cuenta clicks.
add(ClickMe);//Agrega el Boton a la venatana.
ClickMe.setSize(140, 20);
ClickMe.setLocation(90,40);
JTextField clicksCounter = new JTextField("Número de Clicks");//Muestra el número de clicks al boton.
add(clicksCounter);
ButtonHandler handler = new ButtonHandler();
ClickMe.addActionListener(handler);
}
private class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent handler){
int times=0;
times ++;
clicksCounter.setText("Clicks:"+times);
}
}
}

最佳答案

虽然所有其他答案都部分正确,但您还有一个大错误。您定义 clicksCounter 两次。一次在全局变量中,再次在构造函数中。

参见:

JTextField clicksCounter;

JTextField clicksCounter = new JTextField("Número de Clicks");//点击按钮的次数。

将第二行(位于构造函数中)更改为:clicksCounter = new JTextField("Número de Clicks");//Muestra el número de clicks a l boton。

如果你不这样做,你将得到一个 NullPointerException。

您遇到的另一个问题是 ActionListener 中 times 的本地定义。通过在监听器本身中定义times,每次单击按钮都会重置它,从而违背了计数器的目的。

移动,使其超出操作监听器的范围,最好与所有其他全局定义一起使用。您的 Action 监听器应该如下所示:

private class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent handler){
times++;
clicksCounter.setText("Clicks:"+times);
}
}

关于java - 如何更改此应用程序的 JLabel 中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13486041/

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