1 import java.awt.*;
2 import javax.swing.*;
3 import javax.swing.JFrame;
4 import java.awt.event.WindowListener;
5 import java.awt.event.WindowEvent;
6 import java.awt.event.WindowAdapter;
7 import java.awt.event.ActionListener;
8 import java.awt.event.ActionEvent;
9 class QQ extends JFrame //继承JFrame
10 {
11
12 }
13 class FixFrame extends JFrame
14 {
15 this.setResizable(false);
16 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17 }
18 class ResizableFrame extends JFrame
19 {
20 this.setResizable(true);
21 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22 }
23 class LoginFrame extends FixFrame
24 {
25 LoginFrame() //构造函数
26 {
27 display();//调用display()函数
28 }
29 private JButton btn1;
30 private JButton btn2;
31 private JTextField jtf1;
32 private JPasswordField jpf1; //密码文本
33 private ImageIcon img1;
34 private JLabel background1;
35 private ImageIcon img2;
36 private JLabel background2;
37 private JLabel lab1;
38 private Font fnt;
39 private JLabel lab2;
40 private Image im1;
41 private ImageIcon im2;
42 private MyListener ltn;
43 private BtnAction act;
44 private BtnAction2 act2;
45 class MyListener extends WindowAdapter //适配器 是扩展 不需要覆盖WindowAdapter中的所有方法 功能代码较多
46 {
47 public void windowClosing(WindowEvent e)
48 {
49 System.out.println("windowClosing");
50 int res = JOptionPane.showConfirmDialog(null,"是否退出程序应用","提示", JOptionPane.YES_NO_OPTION); //弹出消息框
51 System.out.println("res =" + res);
52 if(res == 0)
53 {
54 System.out.println("退出");
55 System.exit(1);// 退出
56 System.out.println("退出1"); //不输出 因为exit先执行
57 }
58 else if(res == 1)
59 {
60 System.out.println("不退出");
61 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
62 //System.exit(1);// 退出
63 // 不退出
64 }
65 }
66 }
67 class BtnAction implements ActionListener //btn事件
68 {
69 public void actionPerformed(ActionEvent e)
70 {
71 System.out.println("actionPerformed");
72 if(jtf1.getText().equals("jk") && jpf1.getText().equals("jk"))
73 {
74 System.out.println("OK");
75 dispose();
76 (new JFrame("主窗口")).setVisible(true);
77 }
78 else
79 {
80 System.out.println("Error");
81 JOptionPane.showConfirmDialog(null,"密码错误","提示", JOptionPane.DEFAULT_OPTION);
82 }
83 }
84 }
85 class BtnAction2 implements ActionListener //内部类
86 {
87 public void actionPerformed(ActionEvent e)
88 {
89 Object o = e.getSource();
90 JButton b = (JButton)o; //强制类型转换
91 System.out.println("芝麻开门" + btn2.getText()); //类的成员/函数,可以在内部类中使用
92
93 if(b == btn2) //b.getSource == "重置"
94 {
95 jtf1.setText("");
96 jpf1.setText("");
97 }
98 }
99 }
100 public void display()
101 {
102 //JFrame frm = new JFrame(); //窗体
103 img1 = new ImageIcon("timg.gif"); //背景
104 background1 = new JLabel(img1);
105 this.getLayeredPane().add(background1, new Integer(Integer.MIN_VALUE));
106 //background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
107 background1.setBounds(0, 0, 425, 450);
108 img2 = new ImageIcon("33.gif");
109 background2 = new JLabel(img2);
110 this.getLayeredPane().add(background2, new Integer(Integer.MIN_VALUE));
111 background2.setBounds(0, 0, img2.getIconWidth(), img2.getIconHeight());
112
113 jtf1 = new JTextField(30); //文本
114 //jtf1.setColumns(10);
115 jtf1.setSize(200,35);
116 jtf1.setLocation(130,130);
117 jpf1 = new JPasswordField(30); //密码文本
118 //jpf1.setEchoChar('#'); 设置密码文本内容
119 jpf1.setSize(200,35);
120 jpf1.setLocation(130,180);
121
122 lab1 = new JLabel("账号:"); //标题
123 fnt = new Font("Serief",Font.ITALIC+Font.BOLD,15);
124 lab1.setFont(fnt);
125 lab1.setBackground(Color.BLUE); //label的背景颜色
126 lab1.setOpaque(true); //label是否透明
127 lab1.setForeground(Color.YELLOW); //label前景色
128 lab2 = new JLabel("密码:");
129 lab1.setSize(50,30);
130 lab2.setSize(50,30);
131 lab1.setLocation(70,130);
132 lab2.setLocation(70,180);
133 btn1 = new JButton("登录");
134 btn1.setBounds(100,230,180,50);
135 im1 = (new ImageIcon("QQ.png")).getImage(); //图标
136 this.setIconImage(im1);
137 //ImageIcon im2 = new ImageIcon("77.png"); //图标
138 im2 = new ImageIcon("./77.png");
139 btn1.setIcon(im2);
140 this.setLayout(null); //布局--绝对布局
141 ltn = new MyListener(); //监听
142 this.addWindowListener(ltn);
143 act = new BtnAction(); //btn事件
144 btn1.addActionListener(act);
145 btn2 = new JButton("重置");
146 btn2.setBounds(300,230,100,50);
147 act2 = new BtnAction2();
148 btn2.addActionListener(act2);
149 //frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
150 this.setSize(425,325);
151 this.setLocation(700,500);
152 this.setTitle("QQ登录");
153 this.setResizable(false);
154 this.add(btn1);
155 this.add(btn2);
156 this.add(lab1);
157 this.add(lab2);
158 this.add(jpf1);
159 this.add(jtf1);
160 this.add(background1);
161 this.add(background2);
162 this.setVisible(true);
163 System.out.println("OK");
164 }
165 public static void main(String[] args)
166 {
167 LoginFrame Event1 = new LoginFrame();
168 System.out.println("OK");
169 }
170 }
171 class RegsterFrame extends FixFrame
172 {
173
174 }
175 class BackPswFrame extends FixFrame
176 {
177
178 }
179 class MainFrame extends ResizableFrame
180 {
181
182 }