如何通过单击 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);
}
}
其实你有两个问题:
您将 student
声明为局部变量,而它已被定义为实例变量(阴影);你应该在你的情况下使用实例变量。
此外,在您的示例中,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);
}
}
我想在单击第二个 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);
}
}
其实你有两个问题:
您将
student
声明为局部变量,而它已被定义为实例变量(阴影);你应该在你的情况下使用实例变量。此外,在您的示例中,
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);
}
}