【问题标题】:Java, change JLabel text on clickJava,单击时更改 JLabel 文本
【发布时间】:2018-06-05 21:12:33
【问题描述】:

我是这个网站和 Java 编程的新手,非常感谢您的帮助。我正在尝试使用 SWING 制作一个非常简单的程序,其中用户单击一个按钮,标签的文本从“Hello”变为“Bonjour”。这是我得到的两个错误:

java:6: error: Lab4Part1 is not abstract and does not override abstract 
method actionPerformed(ActionEvent) in ActionListener
public class Lab4Part1 extends JFrame implements ActionListener {

java:25: error: cannot find symbol
label.setText("Bonjour");

有什么想法吗?我的代码在这里:

 import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;

    public class Lab4Part1 extends JFrame implements ActionListener {

    public Lab4Part1() {
        super("Lab 4 Part 1");
        Container contentPane = getContentPane();
        JPanel panel = new JPanel();
        contentPane.add(panel);
        setSize(400, 100);
        setVisible(true);

            JLabel label = new JLabel("Hello");
            panel.add(label);

            JButton button = new JButton("Translate to French");
            panel.add(button);
            button.addActionListener(this);
    }

    public void handle(ActionEvent event) {
    label.setText("Bonjour");
    }

    public static void main(String[] args) {
        Lab4Part1 myFrame = new Lab4Part1();
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }

【问题讨论】:

  • 我刚刚解决了第一个问题,对不起!我的愚蠢错误,只是关于我如何命名我的方法。但是,第二个仍然存在。动作方法找不到“标签”对象。
  • edit你的问题消除了第一个问题。第二个问题只是基本的 Java,将引用传递到需要的地方和变量 scope 的知识(查找)。

标签: java swing jlabel actionevent


【解决方案1】:

您必须直接在类中声明 JLabel,以便您可以从句柄函数中访问它:

public class Lab4Part1 extends JFrame implements ActionListener {      

JLabel label; 

public Lab4Part1() {
    super("Lab 4 Part 1");
    Container contentPane = getContentPane();
    JPanel panel = new JPanel();
    contentPane.add(panel);
    setSize(400, 100);
    setVisible(true);

        label = new JLabel("Hello");
        panel.add(label);

        JButton button = new JButton("Translate to French");
        panel.add(button);
        button.addActionListener(this);
}

public void handle(ActionEvent event) {
label.setText("Bonjour");
}

【讨论】:

  • 谢谢一百万!像魅力一样工作!
  • @ProioxisPrime 如果对您有帮助,请选择作为答案:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多