我有一个JLabel和一个按钮,JLabel显示按下按钮的次数,但是,我无法计算如何更新显示按钮按下次数的JLabel.
import java.awt.event.*; import java.awt.*; import javax.swing.*; public class SimpleGui { private JFrame f = new JFrame("Basic GUI"); // create Frame int pressed = 0; // tracks number of button presses. JLabel label1 = new JLabel("You have pressed button " + pressed + "times."); private JButton start = new JButton("Click To Start!"); public SimpleGui() { // Setup Main Frame f.getContentPane().setLayout(new GridLayout(0,1)); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { calculate(); } }); // Add components f.add(label1); f.add(start); // Allows the Swing App to be closed f.addWindowListener(new ListenCloseWdw()); } public class ListenMenuQuit implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } public class ListenCloseWdw extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } public void launchFrame() { // Display Frame f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); f.pack(); // Adjusts panel to components for display f.setVisible(true); } public static void main(String args[]) { PrimeTime gui = new PrimeTime(); gui.launchFrame(); } public void calculate() { pressed++; label1 = new JLabel("You have pressed button " + pressed + "times."); // update the GUI with new jLabel f.repaint(); } }
解决方法
问题是您正在创建一个未在面板中显示的新的不同JLabel.
做
public void calculate(){ pressed++; this.label1.setText("You have pressed button " + pressed + "times."); }