小弟想添加一个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));
// }
}}
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));
// }
}}
dds=1;
//pv=pvSubscriber.pv;
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!")在里面打印一段话 看看能不能输出
}
button.addActionListener(this);
这样应该编译都通不过。
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("你好");
}
}给你个简单的例子
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接口,采用匿名内嵌类实现。