图形界面的实现

使用Java Swing设计与编写一个账号注册的图形界面程序,要求:
  1. 使用MVC结构。
  2. 用户能够在界面输入“用户名”和“密码”,且规定:用户名的字节数不超过14,并将注册用户名的规范显示在界面。点击“注册”按钮后,程序将判断用户输入的用户名是否符合规范,即:长度不超过14字节。
  3. 如果用户名不符合规范,则在注册界面提示用户“用户名不能超过14字节,请重新输入。”;反之,则注册成功,用另一个页面显示已注册的用户名和密码。

难点:

MVC结构

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

思路:

我个人的理解是MVC结构由三个类构成,一个主类和两个其他的类。主类则是Model(模型类),作用是初始化一个界面。View(视图)类主要是画出界面和监听器。Controller(控制器)类则是处理数据。

Login类

// public class Login {public static void main(String[] args) {// TODO Auto-generated method stubLoginview log = new Loginview();log.setTitle("注册界面");}
}

Logincontroller类

public class Logincontroller {private String yonghuming;private  String shoujihao;private String mima;void SetName(String yonghuming){this.yonghuming = yonghuming;}void SetCode(String mima){this.mima = mima;}void SetNumber(String shoujihao){this.shoujihao = shoujihao;}String getName(){return yonghuming;}String getCode(){return mima;}String getNumber(){return shoujihao;}boolean JudgeName(){if (yonghuming.length() >= 14)    //判断用户名长度是否超过14字节,若没有超过则返回true给Loginview的监听方法。{return false;}else{return true;}}}

Loginview类

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;public class Loginview extends JFrame{/*** */private static final long serialVersionUID = 1L;Logincontroller user = new Logincontroller();//此处声明的为注册界面的变量,为全局变量Box baseBox, boxV1, boxV3, boxV4;         //声明变量JTextField yonghuming = new JTextField(15);      //用户名文本框JLabel label3;                                   //出错注释JTextField shoujihao = new JTextField(15);       //手机号文本框JTextField mima = new JTextField(15);            //密码文本框JButton zhuce = new JButton("注册");             //注册按钮ComputerListener computer = new ComputerListener();         //监视ActionEvent事件的监视器public Loginview() {setLayout(new java.awt.FlowLayout());setBounds(75,750,450,450);init();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //关闭窗口后的动作:结束窗口所在的应用程序}class ComputerListener implements ActionListener          //监听方法{JLabel label1;JLabel label2;JLabel label4;Box baseBox, boxV1, boxV2;JFrame f1 = new JFrame();@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == zhuce){user.SetName(yonghuming.getText());if (user.JudgeName() == true)        //与Logincontroller类产生交互{user.SetCode(mima.getText());user.SetNumber(shoujihao.getText());label1 = new JLabel(user.getName());label2 = new JLabel(user.getCode());label4 = new JLabel(user.getNumber());//构建注册成功后显示的界面boxV1 = Box.createHorizontalBox();boxV1.add(new JLabel("用户名"));boxV1.add(Box.createHorizontalStrut(10));boxV1.add(label1);boxV2 = Box.createHorizontalBox();boxV2.add(new JLabel("密  码"));boxV2.add(label2);baseBox = Box.createVerticalBox();baseBox.add(boxV1);baseBox.add(Box.createVerticalStrut(10));baseBox.add(boxV2);add(baseBox);FlowLayout f2 = new FlowLayout();f2.setAlignment(FlowLayout.CENTER);f1.setTitle("注册成功");f1.setLayout(f2);f1.setBounds(200,200,300,300);f1.add(baseBox);f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f1.setVisible(true);}else{label3.setText("用户名不能超过14字节,请重新输入。");label3.setForeground(Color.red);}}}}void init() {      //构建出注册界面,采用BoxLayout嵌套布局。//行型盒式布局boxV1 = Box.createHorizontalBox();boxV1.add(new JLabel("用户名"));boxV1.add(Box.createHorizontalStrut(10));boxV1.add(yonghuming);boxV1.add(label3 = new JLabel("最长14个英文或7个汉字"));boxV1.add(label3);boxV3 = Box.createHorizontalBox();boxV3.add(new JLabel("密    码"));boxV3.add(Box.createHorizontalStrut(10));boxV3.add(mima);boxV4 = Box.createHorizontalBox();boxV4.add(zhuce);zhuce.addActionListener(computer);//列型盒式布局baseBox = Box.createVerticalBox();baseBox.add(boxV1);baseBox.add(Box.createVerticalStrut(10));baseBox.add(boxV3);baseBox.add(Box.createVerticalStrut(10));baseBox.add(boxV4);add(baseBox);}
}

运行:


心得:

注册的图形界面不应该用BoxLayout布局,界面不可控太难看,应该用FlowLayout布局。

JAVA:Java Swing 练习题相关推荐

  1. 连连看+php,java基于swing实现的连连看代码

    本文实例讲述了java基于swing实现连连看代码.分享给大家供大家参考. 主要功能代码如下:package llkan; import javax.swing.*; import java.awt. ...

  2. java由大到小输出整数xvz_【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出...

    java经典实例书店书畅想畅销书 109.6元 包邮 (需用券) 去购买 > 目录https://www.cnblogs.com/Qpgshare/p/12588923.html一.视频讲解 h ...

  3. java编程基础素数实验报告,JAVA 基础编程练习题1 (输出素数)

    JAVA 基础编程练习题1 (输出素数) JAVA 基础编程练习题1 (输出素数) 题目:判断 101-200 之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除 2 到 ...

  4. Java 7 Swing:创建半透明和成形的Windows

    Java 7 Swing支持具有透明和非矩形形状的窗口. 以下屏幕截图显示了创建的不透明度为75%的圆形窗口. 您可以通过在JFrame上使用setOpacity方法更改其不透明度来创建半透明窗口. ...

  5. 学生成绩管理系统java+mysql+swing入门级项目开发

    夫陶公清风千古,余又何人,敢称庶几 代码已移至Gitee : https://gitee.com/BreezAm/edu-student 文章目录 简要: 登陆运行效果 主界面运行效果图 界面设置运行 ...

  6. 【java】swing编写窗体

    [java]swing编写窗体 import java.awt.*; import java.awt.event.*; //*********Found********** import javax. ...

  7. java判断五位数回文数_【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断这个数是否为回文数...

    能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能解决题目的代码! 通过学习,练习[Java基础经典练习题],让我们一起来培 ...

  8. Java Web概述-练习题

    ~本特利~ Java Web概述练习题 一.填空题 1.Tomcat的默认端口号是[ 8080 ]. 2.在HTTP协议中,一个完整的请求消息是由请求行.[ 请求头 ]和实体内容三部分组成. 3.HT ...

  9. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

  10. java怎么给文本框加滚动条_懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急!...

    懂Java中Swing的朋友,谁能帮我在Jtextare上加一个滚动条啊?很急! 关注:147  答案:2  信息版本:手机版 电脑版 解决时间 2021-01-13 13:01 提问者当我没来过 2 ...

最新文章

  1. 一文讲述如何将预测范式引入到机器学习模型中
  2. MAC能登录微信,浏览器连不上网
  3. 我国智能家居行业运行现状分析 标准割裂市场
  4. 010-映射诊断环境
  5. 洛谷P1091 合唱队形
  6. UA MATH566 一个例子:什么是隐状态
  7. 2020-11-20(页帧)
  8. ABAP:SAP报表性能的优化
  9. 5.由键盘任意输入1个整形数据(小于10亿,位数不限),将其倒置,如:输入12345,则输出54321。
  10. 我的新书《PWA入门与实践》上市了
  11. 几款开源图像处理软件评测研究
  12. maven文件报错(pom.xml或者jar包缺失)解决方法
  13. java cookie实例_java 中cookie的详解及简单实例
  14. 【40周年系列活动】中国干细胞第十届年会(2020·贵阳)第二轮通知
  15. 雷神开机logo更改_开机logo以及两种修改开机动画方法
  16. 基于WebRTC开源框架的实时视频聊天项目,搭建私人实时通信服务
  17. 实战撤回对方QQ消息+防止别人撤回消息插件演示附软件
  18. 五大主流浏览器内核以及国内常见的几种浏览器内核总结
  19. 贴图技术入门——坦克大战地图
  20. 在JS中如何获取时间以及转换时间

热门文章

  1. c语言大地坐标系和空间直角坐标系的转换,空间直角坐标系与大地坐标系转换程序.doc...
  2. Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
  3. 笔记本计算机的连接无线网络连接,笔记本电脑怎么连无线_笔记本电脑连wifi怎么连-win7之家...
  4. [YNOI2017]由乃的商场之旅 莫队
  5. Codeforces 311D Interval Cubing 数学 + 线段树 (看题解)
  6. 董宝珍:从股市总市值占GDP比例看本轮牛市的归宿
  7. python比对excel表数据中的差异_Excel表格中数据比对和查找的几种技巧
  8. PCB设计技巧10大技巧
  9. 云和大数据,铺就宁夏特色“信息高速路”
  10. 丢番图方程c语言114,丢番图方程的实现