项目
- 1.JFrame
- 2.常用图形用户界面的组件类:
- 3.Java的几种布局方式
- 4.登入界面:
- 5.聊天界面
- 6.画板创建 顺丰速运+
- 7.登入界面和聊天界面的结合
- 8.导入MySQL数据库
- 9.链接数据库(Statement)
- 10.(Statemment)数据库的增删改查
- 11.链接数据库(PrepareStatement)
- 12(preparedStatement)与(Statement)的区别
- 13.聊天界面和主界面的链接
- 14.微信项目(聊天与登入功能)
1.JFrame
JFrame是指一个计算机语言-java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。相当于继承了frame ,MouseListener,WindoeListener.三个类。
2.常用图形用户界面的组件类:
javax.
按钮类: JButton (显示按钮)
文本域类 : JLabel (显示文字)
文本框输入类: JTextField (单行文本框)
JTextArea (多行文本框)
JPassworldField (密码框)选择按钮框:JCheckBox(单选) JRdioButton(复选框)
列表类:JComboBox JList
菜单类:JMenu JMenuBar
3.Java的几种布局方式
如果我们不设置布局管理器,默认的就是BorderLayout.而在add的时候如果不指定位置,就是中间。
import javax.swing.*;
import java.awt.*;
public class hello {
public static void main(String []avgs){
//创建JFrame
JFrame j=new JFrame("按钮");
j.setSize(800,800);
j.setLocationRelativeTo(null);
//进行组件设置
JButton jb=new JButton("a0");
JButton jb1=new JButton("a1");
JButton jb2=new JButton("a2");
JButton jb3=new JButton("a3");
JButton jb4=new JButton("a4");
//在框体上布局
// j.setLayout(new BorderLayout());
// j.add(jb,BorderLayout.NORTH);
// j.add(jb1,BorderLayout.SOUTH);
// j.add(jb2,BorderLayout.WEST);
// j.add(jb3,BorderLayout.EAST);
// j.add(jb4,BorderLayout.CENTER);
//表格布局
// j.setLayout(new GridLayout(3,2)); //行列
// j.add(jb);
// j.add(jb1);
// j.add(jb2);
// j.add(jb3);
// j.add(jb4);
//流布局
j.setLayout(new FlowLayout());
j.add(jb);
j.add(jb1);
j.add(jb2);
j.add(jb3);
j.add(jb4);
j.setVisible(true);
}
}
框体布局:(假如说框体布局不加eat west nother,south.那么就会按照顺序从左到右,从上到下的顺序输出)
表格布局:
流布局(行):在能够显示的情况下,尽可能地缩小显示组件,在默认的情况下,第一个放在最上一行的中间;在有多个的情况下,从左到右,整体在中间,第一行放不下,放到第二行。
4.登入界面:
按钮的组合规则:Jpane的对象可以放在JFrame的对象上,而且JPane的对象也可以放在另外的JPane对象上。这样可以一层层的结合。super和this一样都是引用,区别是this指向当前类的对象,而super指向当前类的父类的对象,这个结论隐藏了一个事实,就是我们new hello的时候,系统会自动new Jpanel ,内存里汇通步产生父类的对象。
import javax.swing.*;
import java.awt.*;
public class hello {
public static void main(String []avgs){
JFrame JF=new JFrame("登入界面");
JF.setSize(400,400); //长宽
JF.setLocationRelativeTo(null); //居中
//设置按钮组件
JLabel UserLab=new JLabel("用户账号");
JLabel PassLab=new JLabel("密码");
JButton Login=new JButton("登入");
JButton Reg=new JButton("注册");
JButton Remove=new JButton("退出");
//设置文本文框
JTextField UserText=new JTextField();
JPasswordField PassText=new JPasswordField();
//设置画板对标签进行输入位置变化
JPanel JIt=new JPanel();
JIt.setLayout(new GridLayout(2,2));
JIt.add( UserLab);
JIt.add(UserText);
JIt.add(PassLab);
JIt.add(PassText);
//设置画板堆按钮进行位置转换
JPanel Bu=new JPanel();
Bu.setLayout(new FlowLayout());
Bu.add(Login);
Bu.add(Reg);
Bu.add(Remove);
//进行整合
JF.setLayout(new BorderLayout());
JF.add(JIt,BorderLayout.NORTH);
JF.add(Bu,BorderLayout.SOUTH);
JF.setVisible(true); //可见
}
}
5.聊天界面
多选类: JComBox
滑动类: JSrollPane
当我们运用组合类的时候,他是一个结合体
当我们运用滑动类的时候,要初始化它是谁的滑动框
import javax.swing.*;
import java.awt.*;
public class hello {
public static void main(String []avgs){
JFrame JF=new JFrame("登入界面");
JF.setSize(400,400); //长宽
JF.setLocationRelativeTo(null); //居中
//设置按钮框
JButton Send=new JButton("发送");
JComboBox List=new JComboBox(); //当设置多选框的时候,多选框自己带一个组件
List.addItem("张三");
List.addItem("李四");
List.addItem("王二");
//设置文本文框
JTextField Front=new JTextField();
JTextArea Gitee=new JTextArea();
//设置滑轮操作
JScrollPane Roll=new JScrollPane(Gitee); //添加滑轮的时候,要注意我们添加到哪里,就把添加的对象放进去
//进行多选框和发送合体
JPanel jp1=new JPanel();
jp1.setLayout(new GridLayout(1,2));
jp1.add(List);
jp1.add(Send);
//进行上框和多选框的合体
JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(2,1));
jp2.add(Front);
jp2.add(jp1);
//进行上下框进行合体
JPanel jp3=new JPanel();
jp3.setLayout(new GridLayout(1,1));
jp3.add(jp2);
//开始合并
JF.setLayout(new BorderLayout());
JF.add(jp3,BorderLayout.NORTH);
JF.add(Roll,BorderLayout.CENTER); //只需要写一个滑轮的即可
JF.setVisible(true); //可见
}
}
6.画板创建 顺丰速运+
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class panel extends Panel implements WindowListener, MouseListener { //注册监听器
//进行对画板进行覆盖
public void paint(Graphics g){
Color c=new Color(0,0,255);
g.setColor(c);
//绘制窗体
g.draw3DRect(200,120,400,400,true);
g.fillRect(200,120,400,25);
Font f=new Font("黑体",Font.BOLD,20);
//登入输出
g.fillRect(250,350,100,50);
g.fillRect(430,350,100,50);
Color c1=new Color(255,255,255);
g.setColor(c1);
g.setFont(f);
g.drawString("顺丰速运+",210,140);
g.fillOval(330,200,100,100);
g.drawString("登入",280,380);
g.drawString("注册",460,380);
Color c2=new Color(0,0,0);
Font f1=new Font("黑体",Font.BOLD,80);
g.setFont(f1);
g.setColor(c2);
g.drawString("SF",340,280);
}
//窗体事件
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("退出系统界面");
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
//鼠标事件
@Override
public void mouseClicked(MouseEvent e) {
if(e.getX()>=250&&e.getX()<=350&&e.getY()>=350&&e.getY()<=400){
System.out.println("进入登入系统");
}
if(e.getX()>=430&&e.getX()<=530&&e.getY()>=350&&e.getY()<=400){
System.out.println("进入注册系统页面");
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
import java.awt.*;
public class hello {
public static void main(String[] args) {
//创建窗体
Frame f=new Frame("聊天界面登入系统");
f.setBackground(Color.BLACK);
f.setSize(800,800);
panel p=new panel();
f.add(p);
f.addWindowListener(p); //导入
f.addMouseListener(p);
p.addMouseListener(p);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
7.登入界面和聊天界面的结合
思路讲解:
首先我们要通过JFrame 来创作出我们所需要的界面操作。第一个是登入操作,第二个是聊天操作。然后分别使用JButton.JTextField,JLabel.JComonBox,JSrollPane的类对其进行操作,嘴和再一步步进行整合成两个窗体。最后把两个窗体以以一下的思路进行链接起来:
首先:我们要插入一个接口ActionListener,用来实现当我们点击按钮或组件的时候的反应。因为此接口的抽象函数又是一个方法,所以我们再界面中设置的方法是在抽象方法中用不了的,所以此时我们应该把窗体的方法尽量设置为全局变量。设置全局变量的两个思路:一个是设置为静态方法、另一个设置为构造函数,对构造函数里面的数据进行初始化操作。从而达到我们所需要的方法都是一个全局的方法。
其次:因为我们需要在主函数中实现对构造函数的生效,所以我们应该设置这个构造函数的对象。从而实现对构造函数的实现,因为构造函数只能进行初始化操作,不能进行实现的操作。所以我们的窗口实现的操作,应该在主函数中实现。然而因为构造函数的类对象没有JFrame的方法,所以此时此刻我们应该使用对JFrame的方法的继承。
续而:当我们继承一个JFrame的时候,JFrame会生成一个默认的框体。因为,所以我们构造函数的窗体就已经多余了。此时此刻我们应该把构造函数的JFrame进行删除。删除之后还有一个问题,那么就是我们创建的在构造函数的JFrame对象还有很多方法调用。此时此刻很简单我们只需要把对象名换成this。即可。因为this.有一个性质那么就是当谁调用this.的时候,那么this就是谁。****【当一个类继承另一个类的时候,那么这个类的对象可以调用,另一个类的非静态方法。】 创建一个对象的同时会自动调用构造函数,所以来说this相当于一个占位置的作用。
然后:我们对这个ActionListener的方法进行操作。假如说方法中的 e.getActionCommand()判断是否和按钮相等,getText()的方法是获取文本框的字符串。
最后:同款的方法我们对其进行操作整合
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class hello extends JFrame implements ActionListener {
//设置文本文框
JTextField UserText=new JTextField();
JPasswordField PassText=new JPasswordField();
JButton Login=new JButton("登入");
JButton Reg=new JButton("注册");
JButton Remove=new JButton("退出");
public hello(){
this.setSize(400,400); //长宽
this.setLocationRelativeTo(null); //居中
//设置按钮组件
JLabel UserLab=new JLabel("用户账号");
JLabel PassLab=new JLabel("密码");
//设置监听:
Login.addActionListener(this);
Reg.addActionListener(this);
Remove.addActionListener(this);
//设置画板对标签进行输入位置变化
JPanel JIt=new JPanel();
JIt.setLayout(new GridLayout(2,2));
JIt.add( UserLab);
JIt.add(UserText);
JIt.add(PassLab);
JIt.add(PassText);
//设置画板堆按钮进行位置转换
JPanel Bu=new JPanel();
Bu.setLayout(new FlowLayout());
Bu.add(Login);
Bu.add(Reg);
Bu.add(Remove);
//进行整合
this.setLayout(new BorderLayout());
this.add(JIt,BorderLayout.NORTH);
this.add(Bu,BorderLayout.SOUTH);
}
public static void main(String []avgs){
hello h=new hello();
h.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(Login.getText())){
System.out.println("登入界面生效");
if (UserText.getText().equals("aaa")&&PassText.getText().equals("111")) {
System.out.println("用户名密码正确");
panel p=new panel();
p.setVisible(true);
this.setVisible(false);
}else {
System.out.println("用户名密码错误");
}
}if(e.getActionCommand().equals(Reg.getText())){
System.out.println("注册界面生效");
}if(e.getActionCommand().equals(Remove.getText())){
System.out.println("退出界面");
System.exit(0);
}
}
}
import javax.swing.*;
import java.awt.*;
public class panel extends JFrame{
public panel(){
this.setSize(400,400); //长宽
this.setLocationRelativeTo(null); //居中
//设置按钮框
JButton Send=new JButton("发送");
JComboBox List=new JComboBox(); //当设置多选框的时候,多选框自己带一个组件
List.addItem("张三");
List.addItem("李四");
List.addItem("王二");
//设置文本文框
JTextField Front=new JTextField();
JTextArea Gitee=new JTextArea();
//设置滑轮操作
JScrollPane Roll=new JScrollPane(Gitee); //添加滑轮的时候,要注意我们添加到哪里,就把添加的对象放进去
//进行多选框和发送合体
JPanel jp1=new JPanel();
jp1.setLayout(new GridLayout(1,2));
jp1.add(List);
jp1.add(Send);
//进行上框和多选框的合体
JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(2,1));
jp2.add(Front);
jp2.add(jp1);
//进行上下框进行合体
JPanel jp3=new JPanel();
jp3.setLayout(new GridLayout(1,1));
jp3.add(jp2);
//开始合并
this.setLayout(new BorderLayout());
this.add(jp3,BorderLayout.NORTH);
this.add(Roll,BorderLayout.CENTER); //只需要写一个滑轮的即可
}
}
8.导入MySQL数据库
1.什么是JDBC
2.JDBC使用的步骤
(1).装载数据库的JDBC程序(jar)
(2).与数据库建立链接(Statement )
(3).将SQL语句传输到数据库中,执行操作,返回的到的结果 (sql语句)
(4).关闭数据库(jar包的导入)
9.链接数据库(Statement)
1.引入驱动程序(jdbc)
2.创立链接(connect。链接Mysql的)
3.承上启下(statement 。(connect的对象调用)cn.createStatement() 创立一个statment对象,用于将SQL语句发送到数据库)返回Statment
4.(statement的对象调用)执行给定的sql语句返回Result
5.(Result的对象调用.next)实现多个列的输出 返回类型是(boolean)
6.(Result的对象进行调用)实现多个列的输出返回类型是(String)
7.对数据进行增加操作(设置字符串sql的作用就是当作一个变量sql,为了在执行更新语句可以少写.)
(增、删、改 用的是execteUpdate()函数)
insert into 被插入表名(插入的数据属性1,插入的数据属性2) values('‘数据1’,‘数据2’);
String sql="insert into admin(username,passworld)values('ccc','333')";
st.executeUpdate(sql); //执行语句
8.数据修改
updata admin set (要修改的属性)=‘修改成什么’ where (要修改来源于哪)=’ 修改的信息’;
//数据修改
String sql="update admin set passworld='555' where username='ccc'";
st.executeUpdate(sql);
9.数据删除
delete from (删除来源于哪个表) where (删除的属性)=‘属性的具体名字’;
//数据删除
String sql="delete from admin where username='ccc'";
st.executeUpdate(sql);
10.单条数据的查询
String sql="select *from admin where (查询的属性)=‘属性名’;
链接数据库的操作:
import java.sql.*;
public class hello {
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver"); //引入驱动程序(MySQL的驱动包)
try {//数据库链接固定格式((驱动程序))jdbc:mysql://(IP地址)127.0.01:(端口)3306/(访问的数据库)qq2),用户名 用户密码
Connection cn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788"); //链接数据库
Statement st=cn.createStatement(); //承接链接数据库,引出sql(下文)
ResultSet rs=st.executeQuery("select *from admin"); //查找admin的所有信息
while(rs.next()){//进行读取数据库的信息
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));//第一列--第n列的属性;
}
ResultSet rs1=st.executeQuery("select *from student");
while(rs1.next()){
System.out.println(rs1.getString(1)+" "+rs1.getString(2)+" "+rs1.getString(3)+" "+rs1.getString(4)+" "+rs1.getString(5));
}
} catch (SQLException throwables) {//异常提出
throwables.printStackTrace();
}
} catch (ClassNotFoundException e) {//异常提出
e.printStackTrace();
}
}
}
数据库信息:
create database qq2;
use qq2;
create table admin(id int primary key auto_increment,
username varchar(20) not null,
passworld varchar(20) not null);
insert into admin(username,passworld) values("aaa","111");
insert into admin(username,passworld) values("bbb","222");
create table student(id int primary key auto_increment,
name varchar(20) not null,
sex varchar(2) not null,
brithday date,
phone varchar(15)
);
insert into student(name,sex,brithday,phone) values("张三","男","1999-02-01","12355687");
10.(Statemment)数据库的增删改查
Result sql="update admin set password='"+passworld+"' where username='"+username";
整体展示:
import java.sql.*;
public class hello {
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver"); //引入驱动程序(MySQL的驱动包)
try {//数据库链接固定格式((驱动程序))jdbc:mysql://(IP地址)127.0.01:(端口)3306/(访问的数据库)qq2),用户名 用户密码
Connection cn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788"); //链接数据库
Statement st=cn.createStatement(); //承接链接数据库,引出sql(下文)
/*
<写死格式>(直接写数据)
//数据插入
String sql="insert into admin(username,passworld) values('ccc','333')";
st.executeUpdate(sql);
//数据修改
String sql="update admin set passworld='555' where username='ccc'";
st.executeUpdate(sql);
//数据删除
String sql="delete from admin where username='ccc'";
st.executeUpdate(sql);
*/
/*
<活的格式>+字符串的拼接
String username="bbb";
String passworld="333";
// 数据插入
(此时此刻我们要考虑一件事情,那么就是当我们把变量插进去的时候,会默认为是字符串。此时我们应该使用字符串拼接,才能完成我们需要的目的)
使用字符串拼接操作。
String sql="insert into admin(username,passworld) values('"+username+"','"+passworld+"')";
st.executeUpdate(sql);
//数据修改
String sql="update admin set passworld='"+passworld+"' where username='"+username+"'";
st.executeUpdate(sql);
数据删除
String sql="delete from admin where username='"+username+"'";
st.executeUpdate(sql);
*/
//数据查询
ResultSet rs=st.executeQuery("select *from admin"); //查找admin的所有信息
while(rs.next()){//进行读取数据库的信息
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));//第一列--第n列的属性;
}
ResultSet rs1=st.executeQuery("select *from student");
while(rs1.next()){
System.out.println(rs1.getString(1)+" "+rs1.getString(2)+" "+rs1.getString(3)+" "+rs1.getString(4)+" "+rs1.getString(5));
}
} catch (SQLException throwables) {//异常提出
throwables.printStackTrace();
}
} catch (ClassNotFoundException e) {//异常提出
e.printStackTrace();
}
}
}
11.链接数据库(PrepareStatement)
1.数据插入:
insert into 表(属性一,属性2) values (?,?)
(PreparedStatement 的对象进行调用 setString(n,添加的数据))
String sql="insert into admin(username,passworld) values (?,?)";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,passworld);
ps.executeUpdate();
2.数据修改:
// //数据修改
String sql="update admin set passworld=? where username=?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,passworld);
ps.setString(2,username);
ps.executeUpdate();
数据删除
String sql="delete from admin where username=?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,username);
ps.executeUpdate();
数据单条查询:
PreparedStatement ps=cn.prepareStatement("select *from admin where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
ps=cn.prepareStatement("select *from admin");
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
数据多条查询
ps=cn.prepareStatement("select *from admin");
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getString(3));
}
import java.sql.*;
public class hello {
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver"); //引入驱动程序(MySQL的驱动包)
try {//数据库链接固定格式((驱动程序))jdbc:mysql://(IP地址)127.0.01:(端口)3306/(访问的数据库)qq2),用户名 用户密码
Connection cn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788"); //链接数据库
String username="fff";
String passworld="789";
int id=1;
// //数据插入
//
// String sql="insert into admin(username,passworld) values (?,?)";
// PreparedStatement ps=cn.prepareStatement(sql);
// ps.setString(1,username);
// ps.setString(2,passworld);
// ps.executeUpdate();
// //数据修改
// String sql="update admin set passworld=? where username=?";
// PreparedStatement ps=cn.prepareStatement(sql);
// ps.setString(1,passworld);
// ps.setString(2,username);
// ps.executeUpdate();
// //数据删除
// String sql="delete from admin where username=?";
// PreparedStatement ps=cn.prepareStatement(sql);
// ps.setString(1,username);
// ps.executeUpdate();
//数据查询
PreparedStatement ps=cn.prepareStatement("select *from admin where id=?");
ps.setInt(1,id);
ResultSet rs=ps.executeQuery();
//数据查询
ps=cn.prepareStatement("select *from admin");
// ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
} catch (SQLException throwables) {//异常提出
throwables.printStackTrace();
}
} catch (ClassNotFoundException e) {//异常提出
e.printStackTrace();
}
}
}
12(preparedStatement)与(Statement)的区别
1.两者在操作之前,都必须引入驱动包和链接好mysql.
2.Statement.必须先定义好一个CreatStatement()的语句,然后再调用exectue()语句,在exectue()的语句中进行书写sql语句.
3.PreparedStatement.是先定义一个PreparedStatement()的语句,然后在PreparedStatement()中写入sql语句。然后在调用执行语句exectue().
13.聊天界面和主界面的链接
<主界面>
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class hello extends JFrame implements ActionListener {
//设置文本文框
JTextField UserText=new JTextField();
JPasswordField PassText=new JPasswordField();
JButton Login=new JButton("登入");
JButton Reg=new JButton("注册");
JButton Remove=new JButton("退出");
public hello(){
this.setSize(400,400); //长宽
this.setLocationRelativeTo(null); //居中
//设置按钮组件
JLabel UserLab=new JLabel("用户账号");
JLabel PassLab=new JLabel("密码");
//设置监听:
Login.addActionListener(this);
Reg.addActionListener(this);
Remove.addActionListener(this);
//设置画板对标签进行输入位置变化
JPanel JIt=new JPanel();
JIt.setLayout(new GridLayout(2,2));
JIt.add( UserLab);
JIt.add(UserText);
JIt.add(PassLab);
JIt.add(PassText);
//设置画板堆按钮进行位置转换
JPanel Bu=new JPanel();
Bu.setLayout(new FlowLayout());
Bu.add(Login);
Bu.add(Reg);
Bu.add(Remove);
//进行整合
this.setLayout(new BorderLayout());
this.add(JIt,BorderLayout.NORTH);
this.add(Bu,BorderLayout.SOUTH);
}
public static void main(String []avgs){
hello h=new hello();
h.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(Login.getText())){
System.out.println("登入界面生效");
/*
if (UserText.getText().equals("aaa")&&PassText.getText().equals("111")) {
System.out.println("用户名密码正确");
panel p=new panel();
p.setVisible(true);
this.setVisible(false);
}else {
System.out.println("用户名密码错误");
}*/
String user=UserText.getText();
String pass=PassText.getText();
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
//使用preparedStatement
String sql="select * from admin where username = ? and passworld = ?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,user);
ps.setString(2,pass);
ResultSet rs=ps.executeQuery();
if(rs.next()){ //假如真
panel p=new panel();
p.setVisible(true);
// student s=new student();
// s.setVisible(true);
this.setVisible(false);
}else{
JOptionPane.showMessageDialog(null,"您输入的密码有误"); //框体的形式输出
}
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
} catch (ClassNotFoundException ex) {
throw new RuntimeException(ex);
}
}if(e.getActionCommand().equals(Reg.getText())){
System.out.println("注册界面生效");
}if(e.getActionCommand().equals(Remove.getText())){
System.out.println("退出界面");
System.exit(0);
}
}
}
<聊天界面>
import javax.swing.*;
import java.awt.*;
public class panel extends JFrame{
public panel(){
this.setSize(400,400); //长宽
this.setLocationRelativeTo(null); //居中
//设置按钮框
JButton Send=new JButton("发送");
JComboBox List=new JComboBox(); //当设置多选框的时候,多选框自己带一个组件
List.addItem("张三");
List.addItem("李四");
List.addItem("王二");
//设置文本文框
JTextField Front=new JTextField();
JTextArea Gitee=new JTextArea();
//设置滑轮操作
JScrollPane Roll=new JScrollPane(Gitee); //添加滑轮的时候,要注意我们添加到哪里,就把添加的对象放进去
//进行多选框和发送合体
JPanel jp1=new JPanel();
jp1.setLayout(new GridLayout(1,2));
jp1.add(List);
jp1.add(Send);
//进行上框和多选框的合体
JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(2,1));
jp2.add(Front);
jp2.add(jp1);
//进行上下框进行合体
JPanel jp3=new JPanel();
jp3.setLayout(new GridLayout(1,1));
jp3.add(jp2);
//开始合并
this.setLayout(new BorderLayout());
this.add(jp3,BorderLayout.NORTH);
this.add(Roll,BorderLayout.CENTER); //只需要写一个滑轮的即可
}
}
14.微信项目(聊天与登入功能)
<聊天界面>
import javax.swing.*;
import java.awt.*;
public class panel extends JFrame{
public panel(){
this.setSize(400,400); //长宽
this.setLocationRelativeTo(null); //居中
//设置按钮框
JButton Send=new JButton("发送");
JComboBox List=new JComboBox(); //当设置多选框的时候,多选框自己带一个组件
List.addItem("张三");
List.addItem("李四");
List.addItem("王二");
//设置文本文框
JTextField Front=new JTextField();
JTextArea Gitee=new JTextArea();
//设置滑轮操作
JScrollPane Roll=new JScrollPane(Gitee); //添加滑轮的时候,要注意我们添加到哪里,就把添加的对象放进去
//进行多选框和发送合体
JPanel jp1=new JPanel();
jp1.setLayout(new GridLayout(1,2));
jp1.add(List);
jp1.add(Send);
//进行上框和多选框的合体
JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(2,1));
jp2.add(Front);
jp2.add(jp1);
//进行上下框进行合体
JPanel jp3=new JPanel();
jp3.setLayout(new GridLayout(1,1));
jp3.add(jp2);
//开始合并
this.setLayout(new BorderLayout());
this.add(jp3,BorderLayout.NORTH);
this.add(Roll,BorderLayout.CENTER); //只需要写一个滑轮的即可
}
}
<主界面>
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class Student extends JFrame implements ActionListener {
//按钮
JButton jb1 = new JButton("查询");
JButton jb2 = new JButton("删除");
JButton jb3 = new JButton("增加");
JButton jb4 = new JButton("更改");
JButton jb5 = new JButton("登入");
JButton jb6 = new JButton("退出");
//输入框
JTextField Tid = new JTextField();
JTextField Tna = new JTextField();
JTextField Tse = new JTextField();
JTextField Tbi = new JTextField();
JTextField Tph = new JTextField();
public JButton getJb1() {
return jb1;
}
public JButton getJb2() {
return jb2;
}
public JButton getJb3() {
return jb3;
}
public JButton getJb4() {
return jb4;
}
public JButton getJb5() {
return jb5;
}
public JButton getJb6() {
return jb6;
}
public JTextField getTid() {
return Tid;
}
public JTextField getTna() {
return Tna;
}
public JTextField getTse() {
return Tse;
}
public JTextField getTbi() {
return Tbi;
}
public JTextField getTph() {
return Tph;
}
//设置框架
public Student() {
this.setSize(450, 400);
this.setLocationRelativeTo(null);
//设置按钮布局
JPanel Button = new JPanel();
Button.setLayout(new FlowLayout());
Button.add(jb5);
Button.add(jb1);
Button.add(jb2);
Button.add(jb3);
Button.add(jb4);
Button.add(jb6);
//设置标签
JLabel id = new JLabel("学号");
JLabel name = new JLabel("姓名");
JLabel sex = new JLabel("性别");
JLabel birthday = new JLabel("生日");
JLabel phone = new JLabel("电话");
//设置输入框
//进行文本框整合
JPanel Information = new JPanel();
Information.setLayout(new GridLayout(5, 2));
Information.add(id);
Information.add(Tid);
Information.add(name);
Information.add(Tna);
Information.add(sex);
Information.add(Tse);
Information.add(birthday);
Information.add(Tbi);
Information.add(phone);
Information.add(Tph);
//进行整体汇总
this.setLayout(new BorderLayout());
this.add(Button, BorderLayout.SOUTH);
this.add(Information, BorderLayout.CENTER);
}
@Override
public void actionPerformed(ActionEvent e) {
String id=this.getTid().getText();
String name=this.getTna().getText();
String sex=this.getTse().getText();
String birthday=this.getTbi().getText();
String phone=this.getTph().getText();
if(e.getActionCommand().equals(this.getJb1().getText())) //查询
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
String sql="select *from student where id=?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,id);
ResultSet rs= ps.executeQuery();
if(rs.next()){
System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5));
}else{
JOptionPane.showMessageDialog(null,"未查询到相关信息"); //框体的形式输出
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
}
System.out.println("点击了查询");
}if(e.getActionCommand().equals(this.getJb2().getText())) //删除
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
String sql="delete from student where id=? and name=?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,name);
ps.executeUpdate();
ps=cn.prepareStatement("select *from student");
ResultSet rs=ps.executeQuery();
if(rs.next()){
System.out.println("删除的数据是:"+" "+rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5));
}else{
JOptionPane.showMessageDialog(null,"删除失败"); //框体的形式输出
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
}
System.out.println("点击了删除");
}if(e.getActionCommand().equals(this.getJb3().getText()))//增加
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
String sql="insert into student(id,name,sex,brithday,phone) values (?,?,?,?,?)";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,name);
ps.setString(3,sex);
ps.setString(4,birthday);
ps.setString(5,phone);
ps.executeUpdate();
ps=cn.prepareStatement("select *from student");
ResultSet rs=ps.executeQuery();
if(rs.next()){
System.out.println("创建了:"+" "+rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5));
}else{
JOptionPane.showMessageDialog(null,"未查询到相关信息"); //框体的形式输出
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
}
System.out.println("点击了增加");
}if(e.getActionCommand().equals(this.getJb4().getText()))//更改
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
String sql="update student set phone=? where id=?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,phone);
ps.setString(2,id);
ps.executeUpdate();
ps=cn.prepareStatement("select *from student");
ResultSet rs=ps.executeQuery();
if(rs.next()){
System.out.println("更改了信息"+rs.getString(1));
}else{
JOptionPane.showMessageDialog(null,"更改失败!"); //框体的形式输出
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
}
System.out.println("点击了更改");
}if(e.getActionCommand().equals(this.getJb5().getText()))
{
try {
Class.forName("org.gjt.mm.mysql.Driver");
try {
Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq2","root","121788");
String sql="select *from student where id = ? and name = ? and sex = ? and brithday =? and phone = ?";
PreparedStatement ps=cn.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,name);
ps.setString(3,sex);
ps.setString(4,birthday);
ps.setString(5,phone);
ResultSet rs=ps.executeQuery();
if(rs.next()){
panel p=new panel();
p.setVisible(true);
this.setVisible(false);
}else{
JOptionPane.showMessageDialog(null,"信息错误"); //框体的形式输出
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
}
System.out.println("点击了登入");
}if(e.getActionCommand().equals(this.getJb6().getText()))
{
System.out.println("点击了退出");
System.exit(0);
}
}
}
<主函数>
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class hello {
public static void main(String[] args) {
//设置监听
hello h=new hello();
Student s=new Student();
s.getJb1().addActionListener(s);
s.getJb2().addActionListener(s);
s.getJb3().addActionListener(s);
s.getJb4().addActionListener(s);
s.getJb5().addActionListener(s);
s.getJb6().addActionListener(s);
s.setVisible(true);
}
}