java组件以及事件处理方面

可以运行,不过没有满足要求,点击ok按钮后没有实现监视器policelistener中的计算功能,求能人帮忙解答

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;//?这个应该属于java.awt
public class Example9_7
{
public static void main(String args[])

{   
    WindowActionEvent win=new WindowActionEvent();
    PoliceListen police=new PoliceListen();//创建监视器
    win.setMyCommandListener(police);//窗口组合监视器
    win.setBounds(100,100,460,360);
    win.setTitle("处理事件");
}

}

class WindowActionEvent extends JFrame//组件加入事件,处理事件
{
JTextField text1;//p1.x
JTextField text2;//p1.y
JTextField text3;//p2.xa
JTextField text4;//p2.y
JTextArea text5;//创建分别访问数据的文本框
JButton button;//加入确认按钮,这个按钮是事件源?
MyCommandListener listener;//Actionlistener的子类创建listener

public WindowActionEvent()
{
    init();
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

void init()
{
    setLayout(new FlowLayout());
        text1=new JTextField(10);//这个部分是怎样操作文本框的?
        text2=new JTextField(10);
        text3=new JTextField(10);
        text4=new JTextField(10);//分配空间给出参数
        text5=new JTextArea(9,20);
        button=new JButton("OK");

        add(new JLabel("p1.x:"));//Label为为用户提供信息的标签
        add(text1);
        add(new JLabel("p1.y:"));
        add(text2);
        add(new JLabel("p2.x:"));
        add(text3);
        add(new JLabel("p2.y:"));
        add(text4);//将文本框加入容器
        add(button);
        add(new JLabel("result:"));//???注意此处原文给出的是文本区
        add(new JScrollPane(text5));

}


void setMyCommandListener(MyCommandListener Listener)//函数作用是设置我的监听器,参数是我的监听器
{
    this.listener=listener;//调用设置方法将某个对象设置为自己的监听器
    listener.setJTextField1(text1);
    listener.setJTextField2(text2);
    listener.setJTextField3(text3);
    listener.setJTextField4(text4);//通过listener调用以后会用到的函数
    listener.setJTextArea(text5);//text5是用来输出的

    button.addActionListener(listener);//此时事件源是button

}

}

interface MyCommandListener extends ActionListener
{
public void setJTextField1(JTextField text);
public void setJTextField2(JTextField text);
public void setJTextField3(JTextField text);
public void setJTextField4(JTextField text);
public void setJTextArea(JTextArea area);

}//此类是ActionListenr的子类,而父类只有一个actionperformed函数

class PoliceListen implements MyCommandListener//负责创建监视器的类
{
JTextField text1;
JTextField text2;
JTextField text3;
JTextField text4;
JTextArea text5;//注意text5是用来显示
public void setJTextField1(JTextField text)
{
text1=text;
}
public void setJTextField2(JTextField text)
{
text2=text;
}
public void setJTextField3(JTextField text)
{
text3=text;
}
public void setJTextField4(JTextField text)
{
text4=text;
}
public void setJTextArea(JTextArea Area)
{
text5=Area;
}//此处是向文本框传递文本

public void actionPerformed(ActionEvent e)
{
    double d=0;
    double x1=Double.parseDouble(text1.getText());
    double y1=Double.parseDouble(text2.getText());
    double x2=Double.parseDouble(text3.getText());
    double y2=Double.parseDouble(text1.getText());
    d=((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

    text5.append("距离是:"+d);
}

}

1个回答

不过没有满足要求,点击ok按钮后没有实现监视器policelistener中的计算功能,求能人帮忙解答
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;//?这个应该属于java.awt
public class Example9_7
{
public static void main(String args[])
{

WindowActionEvent win=new WindowActionEvent();
PoliceListen police=new PoliceListen();//创建监视器
win.setMyCommandListener(police);//窗口组合监视器
win.setBounds(100,100,460,360);
win.setTitle("处理事件");
}
}
class WindowActionEvent extends JFrame//组件加入事件,处理事件
{
JTextField text1;//p1.x
JTextField text2;//p1.y
JTextField text3;//p2.xa
JTextField text4;//p2.y
JTextArea text5;//创建分别访问数据的文本框

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐