gpt4 book ai didi

java - 多个 JButton 实例的 ActionListener

转载 作者:行者123 更新时间:2023-12-03 01:48:29 25 4
gpt4 key购买 nike

在以下代码中将 ActionListener 添加到两个 JButton 时遇到问题。

当我单击这两个按钮 (b1,b2) 时,我想打印 1 和 2

但我只能打印 1 或 2。

您能给我一个解决这个问题的方法吗?

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

class CCCc extends JFrame implements ActionListener{
JButton b1,b2;
JTextField f1;

CCCc(){
setSize(500,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
f1=new JTextField();
f1.setHorizontalAlignment(JTextField.RIGHT);
add("North",f1);
JPanel p1=new JPanel(new GridLayout(1,2));
add(p1);

b1=new JButton("1");
b1.addActionListener(this);
b2=new JButton("2");
b2.addActionListener(this);
p1.add(b1);
p1.add(b2);

setVisible(true);
}
public void actionPerformed(ActionEvent evt){
String s=f1.getText();
f1.setText(s+"1");
}
}

最佳答案

不必要地子类化 JFrame 和 Thread 等类是一个坏主意。不恰本地实现接口(interface)也是一个坏主意。 (第三,尝试查看事件的是一个坏主意,而且命令也很糟糕)

我建议为监听器切换到匿名内部类。您会注意到两个按钮都有公共(public)代码,因此可以将其分解为仅需要单个内部类的方法。保存“1”或“2”的变量通常通过包含匿名内部类的方法中的final 本地字段来引用。但是,您可以使用非匿名类,并以通常的方式访问字段。

关于java - 多个 JButton 实例的 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com