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");