|
import java.awt.event.*; import javax.swing.*; import java.applet.*; import java.util.*; public class Calculation extends JApplet { public void init() { Container contentPane = getContentPane(); JPanel panel=new JPanel(); DigPane = new DigitalPane(); textField1=new JTextField(6); textField2=new JTextField(6); btnAdd=new JButton("+"); btnSub=new JButton("-"); btnMul=new JButton("*"); btnDiv=new JButton("/"); btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int digit1=Integer.parseInt( textField1.getText().trim()); int digit2=Integer.parseInt( textField2.getText().trim()); DigPane.setDigit(String.valueOf (digit1+digit2)); } }); panel.add(textField1); panel.add(textField2); panel.add(btnAdd); panel.add(btnSub); panel.add(btnMul); panel.add(btnDiv); contentPane.add(panel,BorderLayout.SOUTH); contentPane.add(DigPane,BorderLayout.CENTER); //DigPane.setDigit("123456"); } private DigitalPane DigPane; private JTextField textField1; private JTextField textField2; private JButton btnAdd; private JButton btnSub; private JButton btnMul; private JButton btnDiv; } 这段代码 我的意图是 添加4个按钮“加,减,乘,除” 2个文本框 每当按下按钮时 调用DigitalPane对象的setDigit方法将文本显示 (DigitalPane已经通过测试) DigPane是我创建的另一个类 setDigit方法专门用来显示传入的字符串参数的 但无法显示正确信息 请问我的代码有何问题??? 谢谢!!! |
|
|
|
你加了事件监听但你的主类没有继承事件监听类
必须继承 |
|
|
public class Calculation extends JApplet implements ActionListener{
} |
|
|
使用了内部匿名类的实例直接作为监听器注册是不用implements ActionListener的
implements ActionListener的目的只是运用多态,让自己的实例同时也是ActionListener的实例,可以注册为监听器addActionListener(this)的。 看看观察者模式的运用 楼主的代码有没有更完整的 |
|
|
楼上两位老兄讲的不正确,楼主的监听是用了茂名内部类,不需要继承了.
楼主的代码问题应该在于:你的监听处理里面没有处理具体的按钮事件,系统并不知你每次按了哪个按钮 public void actionPerformed(ActionEvent e) { if(e.getSource() == btnAdd){处理add逻辑} if(e.getSource() == btnSub){处理sub逻辑} int digit1=Integer.parseInt( textField1.getText().trim()); int digit2=Integer.parseInt( textField2.getText().trim()); DigPane.setDigit(String.valueOf (digit1+digit2)); } |
|
|
不是吧,楼主的意思是每个按键后面都跟着自己的ACTIONPERFORMED,所以不用单写一个ACTIONPERFROMED的method, 也不用区分按钮的事件
|
|
|
谢谢 各位我的问题 自己已经解决了!!!
|
|