java - 如何动态更改 JLabel

标签 java swing jlabel

我有一个 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.");
} 

关于java - 如何动态更改 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496990/

相关文章:

java - Hadoop Mapreduce中的XML解析

java - MD5 Java模式

Java JScrollPane - 多个组件

java - 为什么我的 JLabels 和 JTextFields 没有出现在 JPanel 中?

java - 如何更改 "panel.add(new JLabel(""));"中 JLabel 的字体大小

java - 在多线程环境中重绘

java - 如何使用spring表单发送表单值?

java - 在矩形内移动小球程序

java - 可以用 Swing Timer 以更优雅的方式完成吗?

java - 图像的永久位置?