一、导入包
AWT(抽象窗口工具包):是java提供用来建立和设置java的图形用户界面的基本工具
Swing(轻量级的图形界面组件):是以AWT平台为基础构建起来的新组件与AWT相比,Swing组件在实现时不包括任何依赖特定平台的代码,因此具有更高的平台无关性和良好的移植性。
以下引用的是这次项目中Register.java的代码,拿出来单独运行可能不行,因包含了连接数据库和导入其他类的部分代码。
二、创建窗体常见的对象、组件和函数
- 对象、组件
- JPanel pContent;//JPanel是Java图形用户界面(GUI)工具包swing中的面板容器类,相当于创建一个桌布。
- JLabel labuname;//JLabel组件表示的是一个标签,本身是用于显示信息的
- JTextField txtuname;//JTextField 是一个文本框,它允许编辑单行文本。
- JTextArea//多行文本输入
- JButton btnreg;//JButton是一个按钮组件
- super("用户账户管理");//引号内填写窗体的标题文字
- JCheckBox//复选框
- JComboBox//下拉列表
- JPasswordField//密码框
组件new出来后,是不会显示的,要将其添加add到这个窗体中,才会显示.
- 函数
- 设置位置大小:.setBounds(0, 0, 500, 400);
//一共有4个参数,前面两个是坐标信息,即x,y坐标。对于屏幕坐标系,这个坐标原点在屏幕左上角,以下为y正轴,右为x正轴;后两个为宽度和高度 - 显示窗体:setVisible(ture);
//不加上窗体不会显示。 - 清楚布局方式:.setLayout(null);
- 添加组件:.add(labuname);
括号内为要添加的组件,此处labuname是JLabel文本标签内 - 窗体居中:setLocationRelativeTo(null);
- 按钮点击事件:
btnreg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }
- 设置背景颜色:.setBackground(Color.pink)
- 设置位置大小:.setBounds(0, 0, 500, 400);
三、实例代码
package com.xmkj.view; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JButton; import com.sun.corba.se.spi.orbutil.fsm.Guard.Result; import com.xmkj.logic.BusytblUser; import java.awt.Color; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet; import java.sql.SQLException; public class Register extends JFrame{ JPanel pContent;//桌布 JLabel labuname;//文本标签 JLabel labupwd; JTextField txtuname;//文本框 JTextField txtupwd; JButton btnreg;//按钮 String vuname = ""; String vpwd = ""; String sql = ""; String sql1 = ""; ResultSet rs = null; public Register() { super("用户账户管理"); this.setSize(500,400); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); pContent = new JPanel(); labuname = new JLabel("用户名:"); labupwd = new JLabel("密码:"); txtuname = new JTextField(20); txtupwd = new JTextField(20); btnreg = new JButton("注册"); pContent.setBounds(0, 0, 500, 400);//设置位置大小 setLocationRelativeTo(null);//chuan labuname.setBounds(130,100, 120, 35); labupwd.setBounds(140, 150, 120, 35); txtuname.setBounds(190, 108, 80, 20); txtupwd.setBounds(190, 158, 80, 20); btnreg.setBounds(190, 210, 60, 20); pContent.add(labuname); pContent.add(labupwd); pContent.add(txtuname); pContent.add(txtupwd); pContent.add(btnreg); btnreg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { vuname = txtuname.getText().trim(); vpwd = txtupwd.getText().trim(); if(vuname.equals("")) { JOptionPane.showMessageDialog(null, "用户名不能为空!"); return; } if(vpwd.equals("")) { JOptionPane.showMessageDialog(null, "密码不能为空!"); return; } //重复判断 sql1 = "select count(id) from tbluser where uname = '"+vuname+"'"; rs = new BusytblUser().query(sql1); try { while (rs.next( )) { try { if(rs.getInt(1) > 0) { JOptionPane.showMessageDialog(null, "用户名重复,请重新设置用户名"); return; }else { sql = "insert into tbluser(uname,pwd) values('"+vuname+"','"+vpwd+"')"; try { new BusytblUser().dataop(sql); JOptionPane.showMessageDialog(null, "用户注册成功!"); return; } catch (Exception e1) { e1.printStackTrace(); } } } catch (HeadlessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } ); pContent.setLayout(null);//清除布局方式 pContent.setBackground(Color.pink); this.getContentPane().add(pContent); this.setVisible(true); } }