Cha*_*den 2 java swing awt event-handling actionlistener
在以下代码中添加ActionListener两个时遇到问题JButtons.
我点击这两个按钮(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");
}
}
Run Code Online (Sandbox Code Playgroud)
将类(例如JFrame和)子类化为Thread不必要的子类是一个坏主意.不恰当地实现接口也是一个坏主意.(第三,尝试查看source事件并且command也很讨厌是个坏主意)
我建议为监听器切换到匿名内部类.您会注意到两个按钮都有共同的代码,因此可以将其考虑到只需要一个内部类的方法中.保持"1"或"2"的变量通常通过final包含匿名内部类的方法中的局部字段来引用.但是,您可以使用非匿名类,并以通常方式访问字段.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |