第十三周课程总结

课程总结

18.9 文本组件: JTextComponent

在Swing中也提供了同样的文本框组件,但是文本输入组件在Swing中也分为好几种:

单行文本框: JTextField
密码文本框: JPasswordField
多行文本框: JTextArea

1 单行文本输入组件:JTextField

范例:使用JTextField定义普通文本框

package text;

import java.awt.GridLayout;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class JTextDemo01{

    public static void main(String args[]){

        JFrame jframe = new JFrame("Welcome to CSDN");

        JTextField name = new JTextField(30);   //定义文本框,并指定内容

        JTextField noed = new JTextField("CSDN", 10);   //定义文本框,指定内容和长度

       
        JLabel nameLabel = new JLabel("输入用户名:");    // 定义标签

        JLabel noedLabel = new JLabel("不可编辑文本:");

      
        noed.setEnabled(false);   //此文本框不可编辑

        name.setColumns(30);    //设置长度,但此时不起作用

        noed.setColumns(10);

        jframe.setLayout(new GridLayout(2, 2));   //设置容器的布局管理器

        jframe.add(nameLabel);

        jframe.add(name);

        jframe.add(noedLabel);

        jframe.add(noed);

        jframe.setSize(300, 100);

        jframe.setLocation(300, 200);

        jframe.setVisible(true);

    }

}

以上程序使用了GridLayout的排版格式,第一个文本框是可编辑的;第二个文本框是不可编辑的。
2 密文输入组件:JPasswordField
JTextField是使用明文方式进行数据显示的,如果现在需要将回显的内容设置成其他字符,则可以使用JPasswordField类。

范例:设置密文显示框

package test;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPasswordField;

public class JPasswordDemo01{

    public static void main(String args[]){

        JFrame jframe = new JFrame("Welcome to CSDN");

        JPasswordField jpf1 = new JPasswordField();

        JPasswordField jpf2 = new JPasswordField();

        
        jpf2.setEchoChar('#');

        JLabel label1 = new JLabel("默认的回显示:");

        JLabel label2 = new JLabel("回显设置为“#”:");


        label1.setBounds(10, 10, 100, 20);

        label2.setBounds(10, 40, 100, 20);

        jpf1.setBounds(110, 10, 80, 20);

        jpf2.setBounds(110, 40, 50, 20);

      
        jframe.setLayout(null);

        jframe.add(label1);

        jframe.add(jpf1);

        jframe.add(label2);

        jframe.add(jpf2);

        jframe.setSize(300, 100);

        jframe.setLocation(300, 200);

        jframe.setVisible(true);

    }
}

第一个密文框使用的是默认的回显字符;而第二个密文框是将“#” 设置成为回显字符!
3 多行文本输入组件:JTextArea

范例:使用JTextArea

package test;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextArea;

public class JTextAreaDemo01{

    public static void main(String args[]){

        JFrame jframe = new JFrame("Welcome to CSDN");

        JTextArea jta = new JTextArea(3, 10);

        JLabel label = new JLabel("多行文本域:");

        label.setBounds(10, 10, 120, 20);

        jta.setBounds(130, 10, 150, 100);

        jframe.setLayout(null);

        jframe.add(label);

        jframe.add(jta);

        jframe.setSize(300, 150);

        jframe.setLocation(300, 200);

        jframe.setVisible(true);

    }
}

上面程序只是简单地构造了一个文本域。

18.10 事件处理

1 事件和监听器

EventObject类的定义格式如下所示:

public class EventObject extends Object implements Serializable{
   public EventObject(Object source){  //构造一个发生事件的对象

   }
   public Object getSource(){   //返回一个事件对象

   }
   public String toString(){     //得到信息

   }
}

在这个类中定义了3个方法,其中可以通过getSource()方法获得发生此事件的源对象!
大部分图形界面的事件处理类和接口都保存在java.awt.event包中。
2 窗体事件
WindowListener是专门处理窗体的事件监听接口。一个窗体的所有变化,如窗口的打开、关闭等都可以使用这个接口进行监听。

3 监听适配器
在整个事件处理中提供了很多的Adapter(适配器)类,方便用户进行事件处理的实现。
以WindowAdapter类为例,用户只要继承了此类,就可以根据自己的需要覆写所需要的方法,如果现在只关心窗口关闭方法,则只需要在子类中覆写windowClosing()方法即可!!
范例:通过WindowAdapter实现监听

package test;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyWindowAdapterEventHandle extends WindowAdapter{
    public void windowClosing(WindowEvent e){
        System.out.println("window -->  closing!!!");
        System.exit(1);
    }
}

4 动作事件及监听处理
要想让一个按钮变得有意义,就必须使用事件处理。在Swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。 ActionListener接口只定义了一个方法:

interface ActionListener{
   void actionPerformed(ActionEvent e);

}

因为动作事件有可能有多种事件源调用,所以为了保险起见,在代码操作之前增加了一下验证:

if(e.getSource() == button){  //判断触发源是否是按钮

}

直接使用了地址比较方式,如果操作的事件源是由按钮触发的。则执行语句。当然,此时代码是在一个类中完成,如果现在换成了两个类,则可以通过instanceof关键字来判断操作的数据源类型,如下所示:

if(e.getSource() instanceof JButton){  //判断触发源是否是按钮

}

5 键盘事件及监听处理
在Swing的事件处理中也可以对键盘的操作进行监听。需要使用KeyListener接口!

如果要取得键盘输入的内容,则可以通过KeyEvent取得。

6 鼠标事件及监听处理
MouseListener接口可以对一个鼠标的操作进行监听,如鼠标按下、松开等等操作。该接口定义了以下方法:

在每个事件触发后都会产生MouseEvent事件,此事件可以得到鼠标的相关操作。MouseEvent类的常用方法及常量如下图所示:

7 鼠标拖拽事件及监听处理
在Swing的事件处理中可以使用MouseMotionListener接口来完成鼠标的拖拽操作。

18.11 单选按钮: JRadioButton

JRadioButton类的常用方法如下图所示:

在单选按钮操作中,可以使用ItemListener接口进行事件的监听。

此方法中存在ItemEvent事件,ItemEvent类的常用方法及常量

18.12 复选框:JCheckBox

JCheckBox类的常用方法:

JCheckBox的其他使用方法和JRadioButton类的操作类似.JCheckBox和JRadioButton的事件处理监听接口是一样的,都是使用ItemListener接口。二者的常用方法都在上面。

posted @ 2019-11-22 20:26  反语ooo  阅读(194)  评论(1编辑  收藏  举报