3.2 输入框监听
3.2.1 TextFiled 单行输入框
它在 AWT 库里面,有很多事件。
我们现在就举例其中一个 事件。actionPerformed() 意思是执行的动作。
所谓 组件的执行动作,不就是 一个组件最原本的功能吗?比如说 :输入框 输入完 东西,按下回车会怎么样。按钮被按下,会怎么样。
Ctrl+O 查看需要生成的所有方法。
Ctrl+I 查看当前最需要生成的方法。
容器.pack() 是 Java 提供的方法,用来自动 选择 最优布局。
- 获取到单行输入框的内容
package com.muquanyu.leeson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class TestTextArea {
public static void main(String[] args) {
MyFrame frame = new MyFrame();//启动!}
}
class MyFrame extends Frame{
public MyFrame(){
TextField textField = new TextField();add(textField);NewActionListener newActionListener = new NewActionListener();//监听这个文本框输入的文字textField.addActionListener(newActionListener);setVisible(true);pack();//自动布局}
}
class NewActionListener implements ActionListener{
@Overridepublic void actionPerformed(ActionEvent e) {
//获得一些 资源TextField t = (TextField)e.getSource();//ActionEvent 的 父类是 Object 类的//所以可以进行 向下转换,因为 我们不知道 接收过来的 e 到底是什么类型的。//但是我们可以确定的是,开发者 是知道 这个 类型的!所以要进行 转换,才能够 使用//这个 接收过来的 对象(组件) 的方法。System.out.println(t.getText());}
}
接收过来的 组件对象,被 ActionEvent 转换了,所以我们会发现我们 无法使用 该组件的方法,比如说 获取 单行输入框的内容。 getText()。就无法使用。
解决方法很简单,就是 再转换回去 就行了呗。所以我们进行了强转!
- 添加 密文封装和自动清空 的功能
package com.muquanyu.leeson02;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class TestTextArea {
public static void main(String[] args) {
MyFrame frame = new MyFrame();//启动!}
}
class MyFrame extends Frame{
public MyFrame(){
TextField textField = new TextField();textField.setEchoChar('*');//设定 每个 字符 都是 显示为 * 这个字符!//这样就实现了 密文。。add(textField);NewActionListener newActionListener = new NewActionListener();//监听这个文本框输入的文字textField.addActionListener(newActionListener);setVisible(true);pack();//自动布局}
}
class NewActionListener implements ActionListener{
@Overridepublic void actionPerformed(ActionEvent e) {
//获得一些 资源TextField t = (TextField)e.getSource();//ActionEvent 的 父类是 Object 类的//所以可以进行 向下转换,因为 我们不知道 接收过来的 e 到底是什么类型的。//但是我们可以确定的是,开发者 是知道 这个 类型的!所以要进行 转换,才能够 使用//这个 接收过来的 对象(组件) 的方法。System.out.println(t.getText());t.setText("");//必须放在 System.out.println(t.getText());的后面,先后顺序的问题//如果你放在前面,功能就会失效。}
}
setEchoChar() 方法 可以实现密文
setText("") 方法 可以实现清空内容
3.2.1 TextArea 文本域
它跟 TextField 不一样,它是 允许多行的,而TextField 只允许 单行。
首次创建该对象,会让你提供三个参数,第一个是默认文本,第二个是行数,第三个是列数。
当然你也可以仅提供两个参数,或者一个,详细的参数表,请 Ctrl+鼠标左键 进入它的源代码 查看。
拥有的事件:
详细的我们也就不举例子的,其实都是大同小异的。很简单的。