一:概述
在1中,已经对GUI图形化的基础知识做了个概述,2中主要以例子为载体说明。并且介绍时间监听机制
二:具体说明
<1>猜数字
// 创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("猜数字");
jf.setSize(400 , 300);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop(true);
jf.setLayout(null);
// 创建一个JLabel对象用于显示文字
JLabel jLabel = new JLabel("系统产生了一个1~100之间的数,你猜一猜");
jLabel.setBounds(70,50,350,20);
jf.add(jLabel);
// 创建一个JTextField用于用户输入猜的数
JTextField inputField = new JTextField();
inputField.setBounds(120,100,150,20);
jf.add(inputField);
// 创建一个JButton按钮
JButton youGuess = new JButton("我猜");
youGuess.setBounds(150,150,100,20);
jf.add(youGuess);
// 设置窗体可见
jf.setVisible(true);
}
<2>用户注册页面
// 创建窗体
JFrame jf = new JFrame();
// 设置标题
jf.setTitle("用户注册");
// 设置窗体的大小
jf.setSize(400, 450);
// 设置默认的关闭方式
jf.setDefaultCloseOperation(3);
// 设置窗体在中间位置显示
jf.setLocationRelativeTo(null);
// 设置窗体在最顶部显示
jf.setAlwaysOnTop(true);
// 取消默认分布
jf.setLayout(null);
// 创建JLabel对象,设置邮箱文本
JLabel emailLabel = new JLabel("邮箱");
emailLabel.setBounds(50,50,50,20);
jf.add(emailLabel);
// 创建邮箱输入框
JTextField emailField = new JTextField();
emailField.setBounds(150,50,180,20);
jf.add(emailField);
// 创建JLabel对象,设置用户名文本
JLabel jLabel1 = new JLabel("用户名");
jLabel1.setBounds(50, 100, 50, 20);
jf.add(jLabel1);
// 用户名输入框
JTextField usernameField = new JTextField();
usernameField.setBounds(150, 100, 180, 20);
jf.add(usernameField);
// 创建JLabel对象,设置密码文本
JLabel jLabel2 = new JLabel("密码");
jLabel2.setBounds(50, 150, 50, 20);
jf.add(jLabel2);
// 创建密码输入框
JPasswordField passwordField = new JPasswordField();
passwordField.setBounds(150, 150, 180, 20);
jf.add(passwordField);
// 创建JLabel对象,设置确认密码文本
JLabel jLabel3 = new JLabel("确认密码");
jLabel3.setBounds(50, 200, 50, 20);
jf.add(jLabel3);
// 创建确认密码框
JPasswordField enterPwdField = new JPasswordField();
enterPwdField.setBounds(150,200,180,20);
jf.add(enterPwdField);
// 创建验证码文本
JLabel checkCodeLabel = new JLabel("验证码");
checkCodeLabel.setBounds(50,250,50,20);
jf.add(checkCodeLabel);
// 创建验证码输入框
JTextField checkCodeField = new JTextField();
checkCodeField.setBounds(150,250,180,20);
jf.add(checkCodeField);
// 创建1个JButton对象
JButton btn1 = new JButton("注册");
btn1.setBounds(50, 300, 280, 20);
jf.add(btn1);
// 设置窗体显示
jf.setVisible(true);
}
<3>事件监听事件的介绍
事件监听机制的组成:
- 事件源:事件发生的地方。可以是按钮,窗体,图片等
- 事件:发生了什么事情。例如:鼠标点击事件,键盘按下事件等
- 事件绑定:把事件绑定到事件源上,当发生了某个事件,则触发对应的处理逻辑
- 事件源对象. addXXXListener(事件);
<4>聊天室案例
// 创建JFrame窗体对象
JFrame jFrame = new JFrame();
// 给窗体设置属性
jFrame.setTitle("聊天室");
jFrame.setSize(400,300);
jFrame.setDefaultCloseOperation(3);
jFrame.setAlwaysOnTop(true);
jFrame.setLocationRelativeTo(null);
jFrame.setLayout(null);
// 创建文本域,用于显示用户输入的内容
JTextArea chatArea = new JTextArea();
chatArea.setBounds(10,10,360,200);
jFrame.add(chatArea);
// 创建输入框,用于用户输入信息
JTextField inputField = new JTextField();
inputField.setBounds(10,230,180,20);
jFrame.add(inputField);
// 创建发送按钮
JButton sendBtn = new JButton("发送");
sendBtn.setBounds(200,230,70,20);
jFrame.add(sendBtn);
// 给发送按钮按钮绑定事件监听机制,使用户发送的信息,在文本域中可以看见
sendBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的信息,调用trim方法用于清除输入文本的前后空格
String input = inputField.getText().trim();
// 将用户输入的信息添加到文本域中。利用追加的方式,不用直接设置
// 原因是直接设置,第二次输入就会覆盖第一次输入的内容
chatArea.append(input + "\n");
// 当用户点击发送按钮后,输入文本框里的内容就需要清空
inputField.setText("");
}
});
// 创建清空聊天的按钮
JButton clearBtn = new JButton("清空聊天");
clearBtn.setBounds(280,230,100,20);
jFrame.add(clearBtn);
// 给清空按钮绑定监听事件
clearBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 当用户点击这个清空按钮后,将文本域中的内容设置为空即好
chatArea.setText("");
}
});
// 设置窗体可见
jFrame.setVisible(true);
}