使用绝对布局的方法创建一个登录密码验证的简易窗口

绝对布局是指直接采用坐标指定的方式在容器中创建窗口,这种方式比较灵活

采用这种方法创建布局的方式主要有以下几步:

  1. 使用Container.setLayout(null)的方式取消布局管理器
  2. 使用Compon.setBounds()的方式来设置每个组件的大小
下面先上代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class UseCase3 extends JFrame {/****/private static final long serialVersionUID = 1L;public UseCase3() {setTitle("登录窗体");setBounds(300, 200, 300, 150);//绝对布局,不使用布局管理器Container cp = getContentPane();cp.setLayout(null);JLabel jl = new JLabel("用户名:");jl.setBounds(10, 10, 200, 18);final JTextField name = new JTextField();name.setBounds(80, 10, 150, 18);JLabel jl2 = new JLabel("密码:");jl2.setBounds(10, 50, 200, 18);final JPasswordField password = new JPasswordField();password.setBounds(80, 50, 150, 18);cp.add(jl);cp.add(name);cp.add(jl2);cp.add(password);JButton jb = new JButton("确定");jb.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {if (name.getText().trim().length() == 0|| new String(password.getPassword()).trim().length() == 0) {JOptionPane.showMessageDialog(null, "用户名密码不允许为空");return;}if (name.getText().trim().equals("mr")&& new String(password.getPassword()).trim().equals("mrsoft")) {JOptionPane.showMessageDialog(null, "登录成功");} else {JOptionPane.showMessageDialog(null, "用户名或密码错误");}}});jb.setBounds(80, 80, 60, 18);cp.add(jb);final JButton button = new JButton();button.setText("重置");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {// TODO 自动生成方法存根name.setText("");password.setText("");}});button.setBounds(150, 80, 60, 18);getContentPane().add(button);setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);setVisible(true);}public static void main(String[] args) {new UseCase3();}}

下面我来简易分析一下代码的逻辑

  1. 首先使用了seTtitle()方法来命名窗口的名称
  2. 接下来设置了窗口的大小
  3. 定义了一个容器
  4. 接下来就是来定义在窗口上的各种组件
  5. 最后要记得使用add()方法把组件添加到容器上去
  6. 密码验证功能的核心实现:这里只是简单的密码验证,并不涉及到过多的算法,下面着重看一下密码验证部分:

public void actionPerformed(ActionEvent arg0) {if (name.getText().trim().length() == 0|| new String(password.getPassword()).trim().length() == 0) {JOptionPane.showMessageDialog(null, "用户名密码不允许为空");return;}if (name.getText().trim().equals("mr")&& new String(password.getPassword()).trim().equals("mrsoft")) {JOptionPane.showMessageDialog(null, "登录成功");} else {JOptionPane.showMessageDialog(null, "用户名或密码错误");}}

getText()来获取输入的密码文本,trim()来去除两边多余的空格,首先我们需要判断这个框里有东西,这就用到了length()==0的验证方法,这个不难。
后面用到的JOptionPane()方法里面的null可以理解为直接获取返回值,不用过多的去管它。
可以看到后面所谓的“登录验证”无非就是用户名与所设密码的一个与运算罢了,两个都符合的话就可以登陆了(此实例中并不涉及到后台接口的相关问题)

用户输入错误的密码怎么办呢?

这里提供一个快速重置的方法,先上代码:

final JButton button = new JButton();button.setText("重置");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {// TODO 自动生成方法存根name.setText("");password.setText("");

可以看到,无非就是提供了一个所谓的重置按钮,触发的事件是将name与password里的名称重置为空字符串,这样就完成了重置的作用,不过也可以将密码和账号名单独分开,这样对用户来说比较友好,毕竟不是所有人都会同时输错密码与账号

最后一调用,结果就出来了

 public static void main(String[] args) {new UseCase3();}

GUI界面如下:
运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Neo4j:Cypher –属性值只能是原始类型或其数组

本周初,当我尝试在我认为要共享的节点上创建数组属性时,遇到了一个有趣的Cypher错误消息。 这是我写的Cypher查询: CREATE (:Person {id: [1, "mark", 2.0]})导致此错误: Neo.ClientError.Statement.TypeError Prope…

通信工程制图期末考试大纲

通信工程建设的三个阶段 初步设计、技术设计、施工图设计 通信工程建设的参与方 1、建设单位:是建设工程的投资人,也称“业主"。 2、勘察单位:是指已通过建设行政主管部门的资质审查,从事工程测量、水文地质和岩土工程等工…

锁相环锁相原理简洁版

锁相环锁相原理 1.没有参考信号输入的时候,环路滤波器的输出为一个固定值,这是的VCO按照其固定的频率进行震荡 2.当有参考信号输入时,Ur和Uv同时加到鉴相器来鉴相,如果鉴相器fr和fv差别不大的话,这两个电压做差&#…

古诺模型_再见了古诺。 你好Drools工作台。

古诺模型Drools 6.0发生了许多变化。 随着功能和功能的更改,我们对Guvnor github存储库进行了重组,以更好地反映我们的新架构。 历史上,Guvnor一直是Drools的Web应用程序。 它由Drools专用的编辑器,后端存储库和简化的资产管理系统…

八千字复习一下天线与电磁波

1. 空间坐标系 空间直角坐标系(常用)极坐标系平面直角坐标系距离矢量就是空间向量坐标单位矢量就是给距离矢量xyz底下分别除以模长梯度就是xyz求偏导,记得写 ex⃗\vec{e_{x}}ex​​/ey⃗\vec{e_{y}}ey​​/ez⃗\vec{e_{z}}ez​​,最后方程左…

Apache Fluo:填充Google搜索索引的Percolator的实现

Apache Fluo是Apache Accumulo [3]的Percolator [2](填充Google的搜索索引)的开源实现 。 使用Fluo,用户可以将新数据连续地合并到大型现有数据集中,而无需重新处理所有数据。 与批处理和流传输框架不同,Fluo提供了低得…

最通俗的语言讲解卷积码、码树图、状态图以及维特比译码

什么是卷积码? 卷积码是由伊利亚斯发明的一种非分组码,它更加倾向于纠错,对于实际的性能优于分组码,运算较为简单。 将卷积码记为(n,k,N),码率定义为k/n n是n个比特 k是k个信息位 N是N个信息段 卷积码编码器 组成&#xff1a…

通信系统的同步技术归纳

载波同步:在相干解调时,接收端的解调器要产生一个与接收到的载波同频同相的相干载波位同步:接收端产生一个与接收信号符号速率相同,相位与最佳判决时刻一致的定时脉冲序列信号群同步:群同步是指在接收端产生与“字、句…

c语言 在txt文件中搜索关键词_网络推广外包—网络推广外包如何在搜索引擎中体现关键词优化效果...

在当下的互联网时代中,没有企业愿意远离这种流量获取快、用户需求大、宣传推广能力见效快的搜索引擎,况且通过互联网的帮助下,企业网站能够通过搜索引擎进行关键词优化后获取更多的转化率,增加企业交易额度的提升,谁又…

Spring JPA数据+Hibernate+ MySQL + Maven

在Spring MVC的帮助下开发Web应用程序意味着要创建几个逻辑架构层。 层之一是DAO(存储库)层。 它负责与数据库进行通信。 如果您至少开发了DAO层一次,则应该知道它涉及许多样板代码。 Spring Data本身就是与DAO相关的日常工作的一部分。 在帖…

数字通信系统中的均衡技术

均衡技术是为了消除码间串扰的影响 自适应均衡器 可以自动调整抽头滤波系数的均衡器。包含两个工作模式,训练模式和跟踪模式; 训练模式:发射机发射一个已知的定长的序列,以便接收机处的均衡器可以做出正确的设置跟踪模式&#…

eclipse中birt插件使用_waves教学:如何使用通道条插件在DAW中创建模拟工作流

这篇Waves小文章将帮助你了解通道条插件如何来加快混音工作流程,同时还能在DAW中添加令人愉悦的模拟调音台染色——以及它们如何以前所未有的灵活性适应数字新时代。什么是通道条?第一次看到一台老式模拟调音台时,人们常常因为按键、旋钮和推…

X-Mas Musings –在Grails集成测试中不要使用随机服务器端口

对许多人来说,十二月是反思或思考的时期。 所以我决定在去年的事情和想法,以反映- 每一天 ,直到圣诞节。 这是第四天 对于Grails集成测试,了解应用程序当前在哪个端口上运行非常有用。 Spring Boot以及因此建立在它上面的Grails都…

数字通信系统的分集技术

产生原因 无线信道的传输会被多个不同的因素干扰,增加辐射功率会对其他电台产生干扰,采用其他手段来处理数字信号 多径效应 直射波、反射波的传播路径不同,而且无线通信系统中接收端与发送端都是可以移动的,这就是多径效应。 …

主板螺丝是机箱配还是主板配_要配新电脑,A520主板和B450主板哪一个更加值得购买?...

Hello大家好,我是兼容机之家的小牛。上周AMD正式发布了最新的A520芯片组主板,这也补齐了500系列主板的高中低三档配置,现在500系列主板已经拥有X570、B550、A520三个芯片组。那么小牛为什么要拿上一代的B450和最新的A520来做对比呢&#xff1…

javafx 和swing_集成JavaFX和Swing(修订版)

javafx 和swing我刚刚完成了对使用Swing的应用程序组件的重写,现在正在使用JavaFX,最后得到了与更大的swing应用程序集成的JavaFX组件。 这是一个很大的应用程序,重写花了我一段时间,最后一切都很好,我很高兴自己做到了…

php读取csv指定行_PHP快速读取CSV大文件指定行

1、如何快速获取CSV大文件的总行数?办法一:直接获取文件内容,使用换行符进行拆分得出总行数,这种办法对小文件可行,处理大文件时不可行;办法二:使用fgets一行一行遍历,得出总行数&am…

使用WebLogic共享库连续交付ADF应用程序

介绍 当ADF应用程序建立在共享库之上时,有一种非常流行的架构模式。 因此,主应用程序被部署为EAR,并且所有子系统都在共享库中实现,这些共享库可以在“热”模式下独立构建并作为JAR部署到WebLogic,而无需停机。 这种方…

信号与系统 chapter1 常见信号及其变换

什么是信号? 它的定义及其宽泛,但在我们电子通信工程中,我们可以把它看成一种波形;在数学上,我们可以把它看成一个函数。说到函数,函数又分为离散与连续,信号也是一样,分为离散信号…

11选5下期算法_11选5为什么你不中奖

11选五 顾名思义 11个号里选择五个号码球 即中奖 当然玩法也多种多样 这也让很多彩民摸不清头绪 11选5这个东西呢 首先要心态好 毕竟20分钟一起 也算频率大的了 如果盲目的倍投 盲目的跟号 那就容易陷进去 无法自拔 所有的彩票都有概率 都有他所在的规矩 例如127910 8就在79中间…