• 团队冲刺DAY5


    团队冲刺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事件");
       }
    }
    
    
  • 相关阅读:
    手机通讯录实现
    leetcode
    android 上手维修设备和推断启动服务
    MVC Code First (代码优先)
    10000阶乘
    telnet发电子邮件
    nodejs显现events.js:72抛出错误
    指针
    脑洞门大开思维工具:六顶思考帽
    C#实现CAD数据转shape或mdb
  • 原文地址:https://www.cnblogs.com/gjy2019/p/10964423.html
Copyright © 2020-2023  润新知