如何通过单击 Java 中的第二个 JButton 来更改一个 JButton 的文本

How to change the text of one JButton by clicking a second JButton in Java

我想在单击第二个 JButton 时更改一个 JButton 的文本,但它什么也没做。我不知道是什么问题。 如果有人能尽快帮助我,我将不胜感激,并会感激每一份努力。

public class myJPanel6 extends JPanel implements ActionListener
{  

myJButton b1, b2;
student st1;
String s1;

public myJPanel6()
{

    setLayout(new GridLayout(1,1));

    student st1 = new student("Michael", "Robinson", 20);

    b1 = new myJButton(st1.getName());
    b1.addActionListener(this);
    add(b1);

    b2 = new myJButton(st1.WhatIsUp());
            b2.addActionListener(this);
    add(b2);
}

@Override
public void actionPerformed(ActionEvent e) {

   if(e.getSource() == b1)
   {
       s1=st1.WhatIsUp();
       b2.setText(s1);
   }
}

其实你有两个问题:

  1. 您将 student 声明为局部变量,而它已被定义为实例变量(阴影);你应该在你的情况下使用实例变量。

  2. 此外,在您的示例中,b2 已经具有 WhatIsUp 值,因此不会有任何改变;您应该使用名称设置它,以便能够更改按钮一的值。查看我下面的示例以获取完整示例。

代码:

package a.b.c;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class myJPanel6 extends JPanel implements ActionListener {
    JButton b1, b2;
    student st1;
    String s1;

    public myJPanel6() {
        setLayout(new GridLayout(1, 1));

        st1 = new student("Michael", "Robinson", 20);
        b1 = new JButton(st1.getName());
        b1.addActionListener(this);
        add(b1);

        b2 = new JButton(st1.WhatIsUp());
        b2.addActionListener(this);
        add(b2);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == b1) {
            s1 = st1.getName();
            b2.setText(s1);

        }
    }

    public static void main(String[] args) {
        JFrame frm=new JFrame();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myJPanel6 pnl=new myJPanel6();
        frm.add(pnl);
        frm.pack();
        frm.setLocationRelativeTo(null);
        frm.setVisible(true);
    }
}