Java – how to dynamically change jlabel
•
Java
I have a jlabel and a button. Jlabel displays the number of button presses, but I can't calculate how to update the jlabel that displays the number of button presses
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(); } }
Solution
The problem is that you are creating a new and different jlabel that is not displayed in the panel
do
public void calculate(){ pressed++; this.label1.setText("You have pressed button " + pressed + "times."); }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码