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

Nav*_*Ali -2 java swing jbutton

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);
   }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

其实你有两个问题:

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

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

代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述