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

class myAction extends JFrame implements ActionListener {
    myAction() {

        super("Lab 4 Question 1");

        Container c = getContentPane();
        JPanel p = new JPanel();
        JPanel p1 = new JPanel();

        JButton b = new JButton("Button 1");
        JButton b1 = new JButton("Button 2");
        JButton b2 = new JButton("Button 3");

        Font newFont = new Font("SERIF", Font.BOLD, 16);
        b1.setFont(newFont);
        b1.addActionListener(this);

        JLabel l = new JLabel("Hello.");

        p.add(b);
        p.add(b1);
        p.add(b2);
        p1.add(l);
        c.add(p);
        c.add(p1);

        c.setLayout(new FlowLayout());
        setSize(300, 300);
        show();
    }

    public static void actionPerformed (ActionEvent e) {
        if(e.getSource().equals(b))
        {
            this.l.setText("Testing");
        }
    }


    public static void main(String[] args) {
        myAction output = new myAction();
    }
}

如何让我的 JButton b1 更改我的 JLabel l 的值?我对编程很陌生,所以对于你们注意到的任何错误,我深表歉意!每当我单击按钮时,我只需要更改它,我认为我做对了,但找不到我的符号,我很确定我不应该将它们传递给方法:S

4

2 回答 2

2

好吧,您甚至没有ActionListener为您的按钮添加并将actionPerformed方法设为非静态(只需 remove static)。这解决了一个问题:

b.addActionListener(this);

另外,我建议使用匿名内部类,而不是ActionListener直接在您的类中实现。像这样:

b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        //Do stuff
    }
});

另外,制作你的JButton's变量。作为实例变量(将它们移出构造函数)。

于 2013-10-14T12:22:42.980 回答
0

b对您的 actionPerformed 方法不可见,因为它是在构造函数中定义的。您需要将变量b移到myAction().

class myAction extends JFrame implements ActionListener {
    JButton b;
    myAction() {
        b = new JButton("Click");
于 2013-10-14T12:19:21.827 回答