小弟想添加一个Botton事件,红色部分是我为Button事件添加的  我就想按下按钮DDS然后pv==pvSubscriber.pv这句能够起作用,可是目前点了却是没有反应  大家帮忙看一下吧
public class ControlTimerTask extends TimerTask
{
Interface display;
Picture picture_mv;
Button DDS;
int dds=0;
Thread t3=new Thread(this);
pvValueSubscriber pvSubscriber=new pvValueSubscriber();
double KpRemote,KpLocal,TiRemote,TiLocal,TdRemote,TdLocal,TRemote,TLocal,SvRemote,SvLocal,mv,pv,pv1,pv2;
public ControlTimerTask(Interface display1,Picture picture_mv1) 
{
display=display1;
picture_mv=picture_mv1;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==DDS){
                     dds=1;
//pv=pvSubscriber.pv;
} }

public  double pidfunction(double sv,double kp,double ti,double td,double pv2,double pv1,double pv0,double T)
    {
     double e0,e1,e2,detau,q0,q1,q2;
      e2=sv-pv2;
      e1=sv-pv1;
      e0=sv-pv0;
      q0=kp*(1+T/ti+td/T);
      q1=-kp*(1+2*td/T);
      q2=kp*td/T;
      detau=q0*e0+q1*e1+q2*e2;     return detau;    } 
@Override
public void run() {
 if(dds==1)
            {
              pv=pvSubscriber.pv;              }

KpRemote=Double.parseDouble(display.textField_5.getText());
TiRemote=Double.parseDouble(display.textField_6.getText());
TdRemote=Double.parseDouble(display.textField_7.getText());
TRemote=Double.parseDouble(display.textField_8.getText());
SvRemote=Double.parseDouble(display.textField_9.getText());

mv+=pidfunction(SvRemote,KpRemote, TiRemote, TdRemote,pv2,pv1,pv,TRemote);
if(mv<0)
mv=0;
if(mv>1)
mv=1;
pv2=pv1;
pv1=pv;
display.textField_10.setText(String.valueOf(pvSubscriber.pv));
        picture_mv.pv=pv;
        picture_mv.mv=mv;
        picture_mv.SvRemote=SvRemote;
        picture_mv.SvLocal=pvSubscriber.SvLocal;
        picture_mv.mvLocal=pvSubscriber.mvLocal;
        display.textField.setText(String.valueOf(pvSubscriber.kpLocal));
display.textField_1.setText(String.valueOf(pvSubscriber.TiLocal));
display.textField_2.setText(String.valueOf(pvSubscriber.TdLocal));
display.textField_3.setText(String.valueOf(pvSubscriber.TLocal));
display.textField_4.setText(String.valueOf(pvSubscriber.SvLocal));
display.textField_11.setText(String.valueOf(pvSubscriber.pv));
     //    }
}}

解决方案 »

  1.   

    if(e.getSource()==DDS){
    dds=1;
    //pv=pvSubscriber.pv;
    System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!")在里面打印一段话 看看能不能输出   
    }
      

  2.   

    你都没声明实现ActionListener接口,怎么可能有效呢?
    button.addActionListener(this);
    这样应该编译都通不过。
      

  3.   


    package doudou;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class FrameDemo extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L; private JButton button_red;
    private JButton button_blue;
    private JPanel southPanel;
    private JPanel centerPanel; public FrameDemo(String name) {
    super(name);
    this.setLayout(new BorderLayout());
    southPanel = new JPanel();
    centerPanel = new JPanel();
    button_red = new JButton("红色");
    button_blue = new JButton("蓝色");
    button_red.addActionListener(this);// 为按钮注册事件监听
    button_blue.addActionListener(this);// 为按钮注册事件监听
    southPanel.add(button_red);
    southPanel.add(button_blue);
    this.add(southPanel, "South");
    this.add(centerPanel, "Center");
    this.validate();
    this.setSize(300, 200);
    this.setVisible(true);
    } public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("红色"))// 也可以这样写if(e.getSource()==button_red)
    {
    centerPanel.setBackground(Color.red);
    } else if (e.getActionCommand().equals("蓝色"))// 也可以这样写if(e.getSource()==button_blue)
    {
    centerPanel.setBackground(Color.blue);
    }
    } public static void main(String args[]) {
    new FrameDemo("你好");
    }
    }给你个简单的例子
      

  4.   


    package doudou;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class FrameDemo extends JFrame {
    private static final long serialVersionUID = 1L; private JButton button_red;
    private JButton button_blue;
    private JPanel southPanel;
    private JPanel centerPanel; public FrameDemo(String name) {
    super(name);
    this.setLayout(new BorderLayout());
    southPanel = new JPanel();
    centerPanel = new JPanel();
    button_red = new JButton("红色");
    button_blue = new JButton("蓝色"); //使用匿名内嵌类实现 事件监听
    button_red.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    centerPanel.setBackground(Color.red);
    }
    });
    //使用匿名内嵌类实现 事件监听
    button_blue.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    centerPanel.setBackground(Color.blue);
    } });
    southPanel.add(button_red);
    southPanel.add(button_blue);
    this.add(southPanel, "South");
    this.add(centerPanel, "Center");
    this.validate();
    this.setSize(300, 200);
    this.setVisible(true);
    } public static void main(String args[]) {
    new FrameDemo("你好");
    }
    }这样也可以不用实现ActionListener接口,采用匿名内嵌类实现。