JFrome 登陆/注册/回显无数据库连接小程序
当离开RCP插件区重新回顾一下JFrame窗口程序的标签、页面间的跳转。
完成一个登陆、注册界面。(界面完成后练习输入输出流,将前台的注册信息保存到一个文件夹下的.txt文件中)
首先向通过JFrame写出一个登陆窗体来,然后给注册按钮绑定actionListener监听。
以下为login页面
package demo; import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//导入必要的包 public class Demo_login extends JFrame{ JTextField jTextField ; //定义文本框组件
JPasswordField jPasswordField; //定义密码框组件
JLabel jLabel1,jLabel2;
JPanel jp1,jp2,jp3;
JButton jb1,jb2,jb3; //创建按钮
public Demo_login(){
jTextField = new JTextField(12);
jPasswordField = new JPasswordField(13);
jLabel1 = new JLabel("用户名");
jLabel2 = new JLabel("密码");
jb1 = new JButton("确认");
jb2 = new JButton("取消");
jb3 = new JButton("注册");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel(); //设置布局
this.setLayout(new GridLayout(3,1)); jp1.add(jLabel1);
jp1.add(jTextField);//第一块面板添加用户名和文本框 jp2.add(jLabel2);
jp2.add(jPasswordField);//第二块面板添加密码和密码输入框 jp3.add(jb1);
jp3.add(jb2);
jp3.add(jb3);//第三块面板添加确认和取消
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Demo_add();
} public void Demo_add() {
new Demo_add(); }
}); // jp3.setLayout(new FlowLayout()); //因为JPanel默认布局方式为FlowLayout,所以可以注销这段代码.
this.add(jp1);
this.add(jp2);
this.add(jp3); //将三块面板添加到登陆框上面
//设置显示
this.setSize(300, 200);
//this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setTitle("登陆"); }
public static void main(String[] args){
new Demo_login(); }
}
下一步规划注册信息和完成注册界面
package demo; import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField; public class Demo_add extends JFrame{ public static void main(String[] args) {
new Demo_add();
} String [][] arr = new String [100][5];
JLabel id,name,age, gender,introduction;
ButtonGroup bg;
JRadioButton female,male;
JTextArea textArea;
JTextField tf_id,tf_name,tf_age,jf_introduction;
JButton btn_register;
MyPanel jp;
Box box_id,box_name,box_age,box_gender,box_introduction,baseBox; public Demo_add() { setVisible(true);
setSize(400, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
instantiateFunction();
addFunction(); } public void instantiateFunction(){
jp = new MyPanel(new ImageIcon("./src/picture/pic16.jpg").getImage());
baseBox = Box.createVerticalBox();
box_id = Box.createHorizontalBox();
box_name = Box.createHorizontalBox();
box_age = Box.createHorizontalBox();
box_gender = Box.createHorizontalBox();
box_introduction = Box.createHorizontalBox();
btn_register = new JButton("注册");
tf_id = new JTextField(10);
tf_name = new JTextField(10);
tf_age = new JTextField(10);
bg = new ButtonGroup();
female = new JRadioButton("女");
male = new JRadioButton("男");
textArea = new JTextArea(9,20);
listenerFunction(); } /**
* 实现页面跳转和数组传递
* */ public void listenerFunction(){
btn_register.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) { for (int i = 0; i < arr.length; i++) {
//先做一个判断,如果ID不为空,则传过去
if(arr[i][0]==null || arr[i][0].equals("")){
arr[i][0] =tf_id.getText();
arr[i][1] =tf_name.getText();
arr[i][2] =tf_age.getText(); if(male.isSelected()){
arr[i][3] = male.getText();
}else{
arr[i][3] = female.getText();
}
arr[i][4] =textArea.getText(); break;
}
}
new Demo_addMessage(arr); }
});
} public void addFunction(){
add(jp);
box_id.add(new JLabel("ID: "));
box_id.add(tf_id); box_name.add(new JLabel("姓名: "));
box_name.add(tf_name); box_age.add(new JLabel("年龄: "));
box_age.add(tf_age); box_gender.add(new JLabel("性别: "));
bg.add(male);
bg.add(male);
box_gender.add(male);
box_gender.add(female); box_introduction.add(textArea); baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box_id);
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box_name);
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box_age);
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box_gender);
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(new JLabel("个人简介: "));
baseBox.add(box_introduction);
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(btn_register);
jp.add(baseBox); }
} class MyPanel extends JPanel{
Image img;
public MyPanel(Image img) {
this.img = img;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img,0,0, this.getWidth(), this.getHeight(), this);
}
}
正常开发中注册一般会伴随着回显信息的,因为是对JFrame的熟悉所以数据不是来自数据库,我们直接对这个界面中输入的数据回显
package demo; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable; public class Demo_addMessage extends JFrame { JTable table;
JPanel jp;
//MyDate model;
JTable tabel;
ImageIcon img1,img2,img3; public Demo_addMessage(String [][] arr) {
System.out.println("跳过来了");
setVisible(true);
setSize(500, 500);
setTitle("保存信息界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init(arr); } private void init(String [][] arr) {
//标题数组
String [] columns = {"ID","姓名","年龄","性别","个人简介"}; //项目的相对路径./代表项目名称
/*img1 = new ImageIcon("./src/picture/dm.png");
img2 = new ImageIcon("./src/picture/pic12.jpg");
img3 = new ImageIcon("./src/picture/pic2.jpg");*/
//model = new MyDate(arr,columns);
jp = new JPanel();
table = new JTable(arr,columns);//没有图片时的实例化
//table = new JTable(model);//存在图片时的实例化
table.setRowHeight(20); JScrollPane scrollPanel = new JScrollPane(table);
jp.add(scrollPanel);
add(jp); } }
到这儿JFrame的界面就简单完成了,下一步就是注册界面练习输入输出流。详情关注下一篇随笔~

JFrome 登陆/注册/回显无数据库连接小程序的更多相关文章
- JFrome 登陆/注册/回显/输出流小程序之二
- 微信小程序 人脸识别登陆模块
微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...
- 微信小程序-注册和第一个demo
第一篇 申请帐号 https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN 这里注册帐号,记得选小程序, ...
- Struts2标签<s:checkboxlist>回显问题
Struts2 checkboxlist回显问题中,说明两种方式,第一种方式很普遍,第二种则是个人根据现有资源加上尝试得来的成果,第二种主要是为个人笔记(其中相关知识点不一一介绍). 一.普通方法: ...
- 小程序&app 注册登录、绑定
前段时间开发中的一款产品,有小程序和app:小程序直接微信登录,app使用手机号+验证码注册,手机号+验证码/密码登录. 用户使用其中一套账号密码即可正常使用,不强制要求完善另一套账号.为避免同一用户 ...
- SpEL表达式注入漏洞学习和回显poc研究
目录 前言 环境 基础学习和回显实验 语法基础 回显实验 BufferedReader Scanner SpEL漏洞复现 低版本SpringBoot中IllegalStateException CVE ...
- 微信小程序开发者注册流程
一,首先打开浏览器,搜索微信公众平台 点击进入,此时还没有注册微信小程序开发账号,我们需要点击注册 进入注册页面,会出现四种账号,我们选择小程序账号 然后根据提示就可以进行注册了 注册时,需填写一下个 ...
- 微信小程序之注册和入门
一.注册 首先,在微信公众平台mp.weixin.qq.com上注册一个帐号. 小程序开放个人开发者申请注册,个人用户可访问微信公众平台,扫码验证个人身份后即可完成小程序帐号申请并进行代码开发. 这里 ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
随机推荐
- VS2012中使用Boost库的方法(超级简单)
很不错的博客一定得看 http://my.csdn.net/caimouse 1.下载boost库 从http://www.boost.org上下载到目前最新的boost库,快速传送门:boost_1 ...
- C#程序设计基础——运算符与表达式
运算符就是完成操作的一系列符号,它主要包括算术运算符.赋值运算符.关系运算符.逻辑运算符.条件运算.位操作运算符和字符串运算符. 表达式就是运算符和操作数的组合,如a*b+1-c.表达式主要包括算术表 ...
- UIAutomation识别UI元素
MS UI Automation(Microsoft User Interface Automation:UIA)是随.net framework3.0一起发布的,虽然在如今这个几乎每天都有各种新名词 ...
- 图论(网络流):[HNOI 2013]切糕
[HNOI 2013]切糕 第三题:切糕(程序文件名:cake.exe)100 分,运行时限:5s 经过千辛万苦小A 得到了一块切糕,切糕的形状是长方体,小A 打算拦腰将切糕切成两半分给小B.出于美观 ...
- 【字符串】【最小表示法】Vijos P1683 有根树的同构问题
题目链接: https://vijos.org/p/1683 题目大意: 给M棵树,每棵N个点,N-1条边,树边有向,问哪些树同构. 题目思路: [字符串][最小表示法] 用()表示一个节点,那么三个 ...
- poj1743 Musical Theme(后缀数组|后缀自动机)
[题目链接] http://poj.org/problem?id=1743 [题意] 求不可重叠最长重复子串. 2015-11-27 [思路] 1) 据题意处理字符串 ...
- Jenkins 五: 构建Ant项目
1. 点击“新建”,在“Item名称”栏输入要构建的项目名,比如“Ant_project”,选择“构建一个自由风格的软件项目”,点击“OK”按钮. 2. 找到“源码管理”-> “Subversi ...
- poj2255
题目大意: 树恢复??树复原?? 小Valentine非常喜欢玩二叉树的游戏,他非常喜欢在二叉树的树根上随机的写上一下大写字母,这是她创造的一个例子: D / \ / \ B E / \ \ / \ ...
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
Conquer a New Region Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 详解udev
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...