java练习7-18
//Login.java
package com.wbq.event;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//1.创建名为Login的类,在该类中创建一个名为InitUI的方法,图形界面就在此方法中实现
public class Login {
public static void main(String[] args) {
Login log = new Login();
log.InitUI();
}
public void InitUI() {
final JTextField nametext = new JTextField();
char keyvaule[] ={' ',};
/********************** 键盘事件 *************************/
KeyListener kl = new KeyListener() {
//完成一次完整的敲击键盘上某个键的过程(按下和松开)
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.print("输入了:"+nametext.getText());
}
//松开键
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.print("结束");
}
//按下键时调用。
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.println("按下了..");
}
};
/********************** 鼠标事件 *************************/
MouseListener ml = new MouseListener() {
//在组件上释放鼠标按钮时调用
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("鼠标释放了..");
}
//在组件上按下鼠标按钮时调用。
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("鼠标点击");
}
//当鼠标退出组件时调用。
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("鼠标退出");
}
//当鼠标进入组件时调用
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("鼠标移入");
}
//在组件上单击(按下并释放)鼠标按钮时调用。
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("单击");
}
};
// 1.1创建一个顶级容器,也就是空白窗口,并为此窗口设置属性(窗口名称,大小,显示位置,关闭设置)
// 用JFrame创建一个名为frame的顶级容器,需要添加的包名为javax.swing.JFrame
JFrame frame = new JFrame();
// 设置窗口名称
frame.setTitle("QQ");
// 设置窗口大小
frame.setSize(550, 400);
// 设置窗口位于屏幕中央
frame.setLocationRelativeTo(null);
// 参数为3时,表示关闭窗口则程序退出
/**
DO_NOTHING_ON_CLOSE (定义在WindowConstants ):不要做任何事情; 要求程序处理WindowListener对象的windowClosing方法的操作。
HIDE_ON_CLOSE (在WindowConstants定义):在调用任何已注册的WindowListener对象后自动隐藏框架。
DISPOSE_ON_CLOSE (在WindowConstants定义):在调用任何已注册的WindowListener对象后自动隐藏和处理该框架。
EXIT_ON_CLOSE (在JFrame定义):使用System exit方法退出exit程序。 仅在应用程序中使用。
*/
frame.setDefaultCloseOperation(3);//0:无法关闭 3:可以关闭
frame.setResizable(false);
// 1.2设置窗体上组件的布局,此处使用流式布局FlowLayout,流式布局类似于word的布局
// 用FlowLayout创建一个名为f1的对象,需要添加的包名为java.awt.FlowLayout,其中LEFT表示左对齐,CENTER表示居中对齐,RIGHT表示右对齐
FlowLayout f1 = new FlowLayout(FlowLayout.LEFT);
// frame窗口设置为f1的流式左对齐
frame.setLayout(f1);
// 1.3在窗体上添加图片,文字
// 在添加图片之前,先把图片从磁盘中加载到内存中来,使用ImageIcon,需要添加的包名为javax.swing.ImageIcon,括号中为图片路径,路径中要使用”/”,不能使用”\”
ImageIcon imag1 = new ImageIcon("img/c.jpg");
// JLabel可在顶级容器中添加图片文字,需要添加的包名javax.swing.JLabel,此处将上面加载的图片创建为一个JLabel对象
JLabel pic1 = new JLabel(imag1);
// 将创建的图片对象添加到 窗口上
frame.add(pic1);
// 创建一个空的JLabel,它的长度宽度为110,30,因为窗口是流式左对齐,为了将”账号”一栏添加在正中间,所以左侧由空的JLabel填充
JLabel name1 = new JLabel();
// 设置空JLabel长度大小,此处不能使用setSize设置大小,setSize只能设置顶级容器大小,此处用setPreferredSize,Dimension给出大小,需要添加的包名为java.awt.Dimension.
name1.setPreferredSize(new Dimension(130, 30));
// 将空JLabel添加入窗口
frame.add(name1);
// 同上,此处添加的不是空JLabel,而是内容为“账号”的JLabel
JLabel name = new JLabel("账号:");
frame.add(name);
// JTextField在窗口上添加一个可输入可见文本的文本框,需要添加的包名为javax.swing.JTextField.
nametext.addKeyListener(kl);
// 设置文本框大小
nametext.setPreferredSize(new Dimension(220, 30));
// 添加到窗口上
frame.add(nametext);
// 同name1
JLabel name2 = new JLabel();
name2.setPreferredSize(new Dimension(130, 30));
frame.add(name2);
// 同name1
JLabel name3 = new JLabel();
name3.setPreferredSize(new Dimension(130, 30));
frame.add(name3);
// 同name
JLabel password = new JLabel("密码:");
frame.add(password);
// JPasswordField创建一个密码文本框,里面输入的文本是不可见的,其他同nametext
JPasswordField passwordtext = new JPasswordField();
passwordtext.setPreferredSize(new Dimension(220, 30));
frame.add(passwordtext);
// 同name1
JLabel name4 = new JLabel();
name4.setPreferredSize(new Dimension(130, 30));
frame.add(name4);
JLabel name5 = new JLabel();
name5.setPreferredSize(new Dimension(130, 30));
frame.add(name5);
//ActionListener接口
ActionListener a0 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("重置数据");
}
};
//ActionListener接口
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JFrame frame = new JFrame("登录界面");
frame.setLocationRelativeTo(null);
frame.setBounds(20, 20, 300, 100);
JLabel login= new JLabel("登录中");
login.setPreferredSize(new Dimension(30, 30));
frame.add(login);
frame.setVisible(true);
System.out.println("登录中");
}
};
// JButton创建一个可点击的按钮,按钮上可显示文本图片
JCheckBox b1 = new JCheckBox("自动登录");
b1.setPreferredSize(new Dimension(80, 30));
b1.addMouseListener(ml);
frame.add(b1);
JLabel name7 = new JLabel();
name7.setPreferredSize(new Dimension(130, 30));
frame.add(name7);
JCheckBox b2 = new JCheckBox("记住密码");
b2.setPreferredSize(new Dimension(80, 30));
frame.add(b2);
JLabel name8 = new JLabel();
name8.setPreferredSize(new Dimension(130, 30));
frame.add(name8);
JButton bu1 = new JButton("重置");
bu1.addActionListener(a0);
bu1.setPreferredSize(new Dimension(80, 30));
frame.add(bu1);
JLabel name6 = new JLabel();
name6.setPreferredSize(new Dimension(130, 30));
frame.add(name6);
JButton bu = new JButton("登录");
bu.addActionListener(al);
bu.setPreferredSize(new Dimension(80, 30));
frame.add(bu);
// 设置窗口可见,此句一定要在窗口属性设置好了之后才能添加,不然无法正常显示
frame.setVisible(true);
}
}