记录自己用java swing做的第一个简易界面。
LoginAction.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package com.QQUI0819;
import javax.swing.*;
import java.awt.event.*;
//首先,编写按钮癿监听器实现类
public class LoginAction implements
ActionListener {
private int count= 0 ;
//当前为null,创建后指向界面输入框
private JTextField ulName;
private JTextField ulpass;
//创建时,输入界面类中癿输入框
public LoginAction(JTextField ulName,JTextField ulpass ){
this .ulName=ulName;
this .ulpass=ulpass;
}
//实现接口中癿方法
//当劢作发生时,这个方法执行
public void actionPerformed(ActionEvent e) {
//点击时,就取得界面输入框癿内容
//此时癿jtf,指向是界面上那个输入框
String u=ulName.getText();
String p=ulName.getText();
System.out.println( "账号输入的是 " +u);
System.out.println( "密码输入的是 " +p)
if (u.equals( "csy123" ) ||(p.equals( "456" ))){
//如果输入正确,弹出新界面
JFrame jf= new JFrame();
jf.setTitle( "登陆成功" );
jf.setSize( 300 , 400 );
jf.setLocationRelativeTo( null );
jf.setVisible( true );
} else {
//如果输入正确,弹出新界面
JFrame jf= new JFrame();
jf.setTitle( "登陆失败" );
jf.setSize( 300 , 100 );
JButton b1 = new JButton( "登陆失败,账号和密码不匹配" );
jf.add(b1);
jf.setLocationRelativeTo( null );
jf.setVisible( true );
}
}
}
|
QQ.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package com.QQUI0819;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Image;
import java.util.ArrayList;
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.JRootPane;
import javax.swing.JTextField;
public class QQ extends JFrame{
//用户名
private JTextField ulName;
//密码
private JPasswordField ulPasswd;
//小容器
private JLabel j1;
private JLabel j2;
private JLabel j3;
private JLabel j4;
//小按钮
private JButton b1;
//复选框
private JCheckBox c1;
private JCheckBox c2;
/**
* 初始化QQ登录页面
* */
public QQ(){
//设置登录窗口标题
this .setTitle( "QQ登录" );
//去掉窗口的装饰(边框)
//采用指定的窗口装饰风格
this .getRootPane().setWindowDecorationStyle(JRootPane.NONE);
//窗体组件初始化
init();
this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置布局为绝对定位
this .setLayout( null );
this .setBounds( 0 , 0 , 355 , 265 );
//设置窗体的图标
Image img0 = new ImageIcon( "E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQlogo.jpg" ).getImage();
this .setIconImage(img0);
//窗体大小不能改变
this .setResizable( false );
//居中显示
this .setLocationRelativeTo( null );
//窗体显示
this .setVisible( true );
}
/**
* 窗体组件初始化
* */
public void init(){
//创建一个容器,其中的图片大小和setBounds
Container container = this .getContentPane();
j1 = new JLabel();
//设置背景色
Image img1 = new ImageIcon( "E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQ.jpg" ).getImage();
j1.setIcon( new ImageIcon(img1));
j1.setBounds( 0 , 0 , 355 , 90 );
//qq头像设定
j2 = new JLabel();
Image img2 = new ImageIcon( "E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQlogo.jpg" ).getImage();
j2.setIcon( new ImageIcon(img2));
j2.setBounds( 20 , 100 , 60 , 63 );
//用户名输入框
ulName = new JTextField();
ulName.setBounds( 100 , 100 , 150 , 20 );
//注册账号
j3 = new JLabel( "注册账号" );
j3.setBounds( 260 , 100 , 70 , 20 );
//密码输入框
ulPasswd = new JPasswordField();
ulPasswd.setBounds( 100 , 130 , 150 , 20 );
//找回密码
j4= new JLabel( "找回密码" );
j4.setBounds( 260 , 130 , 70 , 20 );
//记住密码
c1 = new JCheckBox( "记住密码" );
c1.setBounds( 105 , 155 , 80 , 15 );
//自动登陆
c2 = new JCheckBox( "自动登陆" );
c2.setBounds( 185 , 155 , 80 , 15 );
//登陆按钮
b1 = new JButton( "登录" );
//设置字体和颜色和手形指针
b1.setFont( new Font( "宋体" , Font.PLAIN, 12 ));
b1.setForeground(Color.black);
b1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
b1.setBounds( 20 , 200 , 300 , 20 );
//给按钮添加
//所有组件用容器装载
this .add(j1);
this .add(j2);
this .add(j3);
this .add(j4);
this .add(c1);
this .add(c2);
this .add(b1);
//创建监听器对象,幵加给按钮
LoginAction lo= new LoginAction(ulName,ulPasswd);
b1.addActionListener(lo);
container.add(j1);
container.add(ulName);
container.add(ulPasswd);
}
public static void main(String[] args) {
new QQ();
}
}
|
效果图
素材
logo:
QQ logo:
补充知识:创建一个简单的Java Swing登入窗口
连接数据图就不弄了,要连接数据库的自行添加
为了方便排版,Layout用SpringLayout类型
1.账号框采用JTextField 类型
2.密码框采用JPasswordField类型
两者的区别是:
JPasswordField显示的文本是这样的:
文本框JTextField显示的文本是这样的:
3.建立两个JButton,一个是“登入”按钮,另一个是“重置”按钮
4.建立两个Checkbox:一个是记住密码,另一个是隐身登入
5.最后一步加入背景图
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
package l;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SpringLayout;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.JLayeredPane;
import java.awt.Checkbox;
public class Login extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JPasswordField passwordField;
public static void main(String[] args) {
EventQueue.invokeLater( new Runnable() {
public void run() {
try {
Login frame = new Login();
frame.setVisible( true ); //窗口可见
frame.setResizable( false ); //设置登入窗口不能调整大小
ImageIcon img = new ImageIcon( "d:/img.jpg" ); //这是背景图片
JLabel imgLabel = new JLabel(img); //将背景图放在标签里。
frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
imgLabel.setBounds( 0 , 0 ,img.getIconWidth(), img.getIconHeight());
Container cp=frame.getContentPane();
((JPanel)cp).setOpaque( false );
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Login() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds( 100 , 100 , 450 , 300 );
contentPane = new JPanel();
contentPane.setBorder( new EmptyBorder( 5 , 5 , 5 , 5 ));
setContentPane(contentPane);
SpringLayout sl_contentPane = new SpringLayout();
contentPane.setLayout(sl_contentPane);
JLabel lblNewLabel = new JLabel( "账号:" );
lblNewLabel.setFont( new Font( "黑体" , Font.PLAIN, 19 ));
sl_contentPane.putConstraint(SpringLayout.NORTH, lblNewLabel, 34 , SpringLayout.NORTH, contentPane);
sl_contentPane.putConstraint(SpringLayout.WEST, lblNewLabel, 41 , SpringLayout.WEST, contentPane);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel( "密码:" );
lblNewLabel_1.setFont( new Font( "黑体" , Font.PLAIN, 19 ));
sl_contentPane.putConstraint(SpringLayout.NORTH, lblNewLabel_1, 29 , SpringLayout.SOUTH, lblNewLabel);
sl_contentPane.putConstraint(SpringLayout.WEST, lblNewLabel_1, 0 , SpringLayout.WEST, lblNewLabel);
contentPane.add(lblNewLabel_1);
textField = new JTextField();
textField.addFocusListener( new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
String temp=textField.getText();
if (temp.equals( "" )) {
textField.setForeground(Color.GRAY); //JTextField提示输入QQ号
textField.setText( "请输入QQ号" );
}
}
public void focusGained(FocusEvent e) {
String temp=textField.getText();
if (temp.equals( "请输入QQ号" )) {
textField.setText( "" );
}
}
});
sl_contentPane.putConstraint(SpringLayout.NORTH, textField, 1 , SpringLayout.NORTH, lblNewLabel);
sl_contentPane.putConstraint(SpringLayout.WEST, textField, 52 , SpringLayout.EAST, lblNewLabel);
sl_contentPane.putConstraint(SpringLayout.EAST, textField, 196 , SpringLayout.EAST, lblNewLabel);
contentPane.add(textField);
textField.setColumns( 10 );
passwordField = new JPasswordField();
sl_contentPane.putConstraint(SpringLayout.NORTH, passwordField, 26 , SpringLayout.SOUTH, textField);
sl_contentPane.putConstraint(SpringLayout.WEST, passwordField, 52 , SpringLayout.EAST, lblNewLabel_1);
sl_contentPane.putConstraint(SpringLayout.SOUTH, passwordField, 48 , SpringLayout.SOUTH, textField);
sl_contentPane.putConstraint(SpringLayout.EAST, passwordField, 201 , SpringLayout.EAST, lblNewLabel_1);
contentPane.add(passwordField);
JButton btnNewButton = new JButton( "登入" );
sl_contentPane.putConstraint(SpringLayout.SOUTH, btnNewButton, 65 , SpringLayout.SOUTH, passwordField);
contentPane.add(btnNewButton);
JButton button = new JButton( "重置" );
sl_contentPane.putConstraint(SpringLayout.NORTH, btnNewButton, 2 , SpringLayout.NORTH, button);
sl_contentPane.putConstraint(SpringLayout.EAST, btnNewButton, - 70 , SpringLayout.WEST, button);
sl_contentPane.putConstraint(SpringLayout.NORTH, button, 32 , SpringLayout.SOUTH, passwordField);
sl_contentPane.putConstraint(SpringLayout.WEST, button, 242 , SpringLayout.WEST, contentPane);
button.setFont( new Font( "宋体" , Font.PLAIN, 19 ));
contentPane.add(button);
Checkbox checkbox = new Checkbox( "记住密码" );
sl_contentPane.putConstraint(SpringLayout.WEST, checkbox, 0 , SpringLayout.WEST, textField);
sl_contentPane.putConstraint(SpringLayout.SOUTH, checkbox, - 6 , SpringLayout.NORTH, btnNewButton);
contentPane.add(checkbox);
Checkbox checkbox_1 = new Checkbox( "隐身登入" );
sl_contentPane.putConstraint(SpringLayout.WEST, checkbox_1, 35 , SpringLayout.EAST, checkbox);
sl_contentPane.putConstraint(SpringLayout.SOUTH, checkbox_1, 0 , SpringLayout.SOUTH, checkbox);
contentPane.add(checkbox_1);
}
}
|
运行截图:
以上这篇java swing 创建一个简单的QQ界面教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_49857492/article/details/108513573