我试图实现这个代码,基本上它是当我按下它的唯一按钮时,它会在按钮上方的标签中增加一个单位。换句话说,它显示用户按下按钮的次数。 但我的问题是,当我按下按钮时似乎无法刷新标签。保存“点击次数”的变量会递增,但在标签中保留的初始声明值为0.有人可以帮忙吗?actionPerformed之外的标签不刷新
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ContadorCliques extends JFrame {
private TrataEvento trataEvento;
private JButton buttonClick;
private int clickCont = 0;
private JLabel l1;
public static void main(String[] args) {
ContadorCliques contador1 = new ContadorCliques("Hello!");
}
public ContadorCliques(String titulo) {
super(titulo);
Container c = getContentPane();
BorderLayout bl = new BorderLayout();
c.setLayout(bl);
l1=new JLabel(String.valueOf(clickCont));
JPanel pBotoes = criarPainelBotao();
c.add(pBotoes, BorderLayout.SOUTH);
//add(pBotoes, BorderLayout.SOUTH);
JPanel pCliques = criarPainelCliques();
c.add(pCliques, BorderLayout.CENTER);
//add(pCliques, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 200);
setMinimumSize(new Dimension(getWidth(), getHeight()));
setLocationRelativeTo(null);
setVisible(true);
}
private JPanel criarPainelCliques() {
JLabel lbl = new JLabel("Número de Cliques: " + l1.getText());
JPanel p = new JPanel();
lbl.setFont(lbl.getFont().deriveFont(20.0f));
p.add(lbl, BorderLayout.CENTER);
return p;
}
private JPanel criarPainelBotao() {
trataEvento = new TrataEvento();
buttonClick = criarBotao();
JPanel p = new JPanel();
p.add(buttonClick);
return p;
}
private JButton criarBotao() {
JButton btn = new JButton("Click Here!");
btn.addActionListener(trataEvento);
return btn;
}
private class TrataEvento implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String obj = (String) e.getActionCommand();
if (obj.compareTo("Click Here!")==0) {
clickCont++;
System.out.println("Funciona");
System.out.println(clickCont);
l1.setText(String.valueOf(clickCont));
}
}
}
}
非常感谢!这解决了问题 –