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

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器