-Alen- 2016-06-02 15:09 采纳率: 0%
浏览 2649

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;//创建分别访问数据的文本框

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?