团队冲刺DAY5

今天的内容是组件和事件处理这一部分,也就是需要扣一个消息系统的图形界面。

提到这部分,就不得不说Java Swing。

常用组件及部件

JTextField:文本框

JTextArea:文本区

JButton:按钮

JLable:标签

JCheckBox:复选框

JRadioButton:单选框

JComboBox:下拉列表

JPasswordFiled:密码框

常用布局

setLayout(布局对象);

处理事件

事件源:

能够产生事件的对象都可以称为事件源,文本框,按钮,下拉框。也就是说,事件源必须是一个对象。而且这个对象必须是java认为可以发生事件的对象

监听器:

需要一个对象对事件源进行监视,以便发生的事件做出处理,事件源通过调用相应的方法,将某个对象注册为自己的监听器,例如文本框,这个方法addActionListener(监听器);

利用组合

可以让一个对象来操作另一个对象,即当前对象可以委托它所组合的一个对象调用方法产生行为。

Receive receive = new Receive(client);
WindowActionEvent win = new WindowActionEvent();
PoliceListen police = new PoliceListen();

我们在书上发现一个不错的界面,就是例子7,打算输入框为服务器和客户端的输入框,下面的文本为服务器和客户端的对话记录。

PoliceListen.java这个是监听类。

import java.awt.event.*;
import javax.swing.*;
public class PoliceListen implements MyCommandListener {
JTextField textInput;
JTextArea textShow;
Socket mysocket;
public void setJTextField(JTextField text) {
textInput = text;
}
public void setJTextArea(JTextArea area) {
textShow = area;
}
public void actionPerformed(ActionEvent e) {
String str=textInput.getText();
textShow.append("客户端:"+str);
}
catch(Exception e){
}
}
}

MyCommandListener.java这个是接口类。

import javax.swing.*;
import java.awt.event.*;
interface MyCommandListener extends ActionListener {
public void setJTextField(JTextField text);
public void setJTextArea(JTextArea area); }

WindowActionEvent.java是主体部分

import java.awt.*;
import javax.swing.*;
public class WindowActionEvent extends JFrame {
JTextField inputText;
JTextArea textShow;
JButton button;
MyCommandListener listener;
public WindowActionEvent() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
inputText = new JTextField(10);
button = new JButton("确定");
textShow = new JTextArea(9,30);
add(inputText);
add(button);
add(new JScrollPane(textShow));
}
void setMyCommandListener(MyCommandListener listener) {
this.listener = listener;
listener.setJTextField(inputText);
listener.setJTextArea(textShow);
inputText.addActionListener(listener); //inputText是事件源,listener是监视器
button.addActionListener(listener); //button是事件源,listener是监视器
}
}

Example9_7测试类

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("处理ActionEvent事件");
}
}

团队冲刺DAY5的更多相关文章

  1. Alpha冲刺——day5

    Alpha冲刺--day5 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...

  2. Beta冲刺——day5

    Beta冲刺--day5 作业链接 Beta冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602134 王龙 ...

  3. 团队冲刺DAY1

    团队冲刺DAY1 今天的内容是对未来6天的突击有一个大致的规划. 我们小组的选题是客户端-服务器安全信息传递系统,通过讨论,我们认为大概有四个难题. 第一个是服务器和客户端,我们打算用第二天来完成. ...

  4. 【团队冲刺总结】一个编码人员的反(tu)思(cao)

    消失了半个多月了啊,算算时间,好像确实有近个把月没有好好的写博客来了.我一直很想写博客的,之前有老师问过写博客的动力是什么.我想了想,我觉得可能是我比较喜欢看书吧,不管是专业书还是小说(好吧,我承认, ...

  5. 团队冲刺the second day

    今天是我们的团队冲刺的第二天,由于我的电脑出现了一点问题,系统还原了,我有重新配置了一下环境变量和一些eclipse的问题,导致时间浪费了很多,但是我还是做了一些简单的任务,例如编写节日的页面的布局, ...

  6. 团队作业八——第二次团队冲刺(Beta版本)第7天&项目汇总

    项目汇总 第一天:http://www.cnblogs.com/newteam6/p/6879383.html 第二天:http://www.cnblogs.com/newteam6/p/688078 ...

  7. 团队作业八——第二次团队冲刺(Beta版本)第6天

    团队作业八--第二次团队冲刺(Beta版本)第6天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题 ...

  8. 团队作业八——第二次团队冲刺(Beta版本)第5天

    团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 完成界面跳转界面. (2) 今天计划完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (3) 工作中 ...

  9. 团队作业八——第二次团队冲刺(Beta版本)第4天

    团队作业八--第二次团队冲刺(Beta版本)第4天 一.每个人的工作 (1) 昨天已完成的工作 做一下用户注册的功能和登录功能. (2) 今天计划完成的工作 完成界面跳转 (3) 工作中遇到的困难 界 ...

随机推荐

  1. 使用juqery-ui完成联想查询功能

    最近公司的项目有个需求,需要使用联想查询功能.就是一个文本输入框,在输入的时候获取值去后端模糊查询然后按照列表显示在下面.效果如下图: 经过搜索找到这个插件,查阅资料可以完成这个功能,即可以实现静态数 ...

  2. Visual Studio Code - 调试 Node.js 代码

    官方的文档写的太好了!大家还是看参考资料吧. 参考资料: Debugging in Visual Studio Code Debug Node.js Apps using Visual Studio ...

  3. iOS开发环境搭建 及 编写1个hello world

    参照: https://www.cnblogs.com/ansersion/p/9084460.html 前置条件 : MAC一台 安装xcode,从appstore 下载 xcode,(6G多,考验 ...

  4. 在windows下用脚手架搭建vue环境

    做了几个月vue项目,最近两个项目使用脚手架搭建的,确实用脚手架搭建方便了许多,想想以前自己手配的时候,确实是... 1.在这之前我是默认你已经使用过vue的,也默认你已经安装了node.js 2.接 ...

  5. 用select实现多客户端连接

    server.c 把accept也看成是一个read类型的函数, 于是我们可以把sockfd也放入到select中 maxi标记当前客户端连接数组的最大下标 select返回值为当前已经准备就绪的fd ...

  6. Cocos2d 之FlyBird开发---GamePlay类

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...

  7. luoguP2184 贪婪大陆 题解(树状数组)

    P2184 贪婪大陆  题目 其实很容易理解就是询问一段区间内有多少段不同的区间 然后再仔细思索一下会发现: 1.只要一个区间的开头在一个节点i的左边,那么这个区间包含在区间1~i中. 2.只要一个区 ...

  8. 一、python基础之字符串的处理

    最近开始重新回过头来巩固一下python的基础知识,并在此做一些记录以便未来更好的回顾 一.字符串的大小写转换 title() 使用title()方法可以将字符串中每个单词的首字母大写 name = ...

  9. JQ的live学习

    $("#StartTime").live("blur keypress keyup",function(){ if($("#EndTime" ...

  10. 记一些经常用到的linux命令

    记一些经常用到的linux命令,备忘用 用清华源pip: pip install django==1.11  tensorflow==1.4.0 keras==2.0.6 -i https://pyp ...