java学习笔记-界面搭建
环境eclipse界面搭建界面搭建简单的登录界面制作工具swing包步骤1声明一个初始化窗体的方法步骤2创建一个顶级容器并设置好相关的属性步骤3创建组件并设置好相关属性再添加到窗体上步骤4精进功能账号密码匹配跳出新界面事件与接口格式实例总结界面搭建简单的登录界面制作工具swing包包一个庞大的类库swing中包含有我们构建网页所需要的布局器规定物件的摆放方法组件、容器(面板) 、顶级容器和各种元素。今天我们会用到的API读者请直接跳过看代码这里只为总结方便import java.awt.Color;import java.awt.Dimension; --尺寸import java.awt.FlowLayout; --流式布局器 当一行摆放不下时就会切换到第二行\居中import javax.swing.ImageIcon; --图片对象import javax.swing.JButton; – 按钮import javax.swing.JCheckBox; --复选框import javax.swing.JFrame; --窗体import javax.swing.JLabel; – 标签import javax.swing.JPanel; --面板import javax.swing.JPasswordField; --密码输入框import javax.swing.JTextField; --文本输入框步骤1声明一个初始化窗体的方法打开eclipse新建java project新建package命名为surface新建class命名Startpackagesurface;publicclassStart{publicstaticvoidmain(String[]args){Start stnewStart();st.initUI();}publicvoidinitUI(){}}步骤2创建一个顶级容器并设置好相关的属性packagesurface;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importjavax.swing.JCheckBox;publicclassStart{publicstaticvoidmain(String[]args){Start stnewStart();st.initUI();}publicvoidinitUI(){JFrame jfnewJFrame();jf.setSize(1280,780);//set form size设置窗体大小jf.setTitle(log in surface);//set words on top设置窗体名字jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//to make it close设置结束按钮没有这行代码程序将无法终止jf.setLocationRelativeTo(null);//set up in the middle设置窗体居中FlowLayout flnewFlowLayout();jf.setLayout(fl);jf.setVisible(true);//可视化//make it visible有这一行代码才能使窗体可见}}效果步骤3创建组件并设置好相关属性再添加到窗体上我们设计界面肯定不能是这么简单一个框框嘛总得加点什么ImageIcon imagenewImageIcon(D:\\programming\\eclipse-workspace\\Battle\\src\\logface\\Facebook_logo.png);//the path of the picture needs to be changed according to your demand上半部分图片,大家自行按需修改图片路径D:\programming\eclipse-workspace\Battle\src\logface\Facebook_logo.png//make sure your code use \\ not single \另外代码中必须要用\\因为\本身是转义字符JLabel imjlanewJLabel(image);jf.add(imjla);将这几行代码加到jf.setVisible(true);前面再看看效果是不是很神奇接下来我们加入更多东西格式都是一样的上面定义属性下面添加组件JLabel imjlanewJLabel(image);JLabel namejlanewJLabel(Account:);JLabel pwdjlanewJLabel(Password:);JCheckBox cbnewJCheckBox(Are you ready?);JTextField nameinputnewJTextField();JPasswordField pwdinputnewJPasswordField();JButton lgbtnnewJButton(log in);JButton rgbtnnewJButton(register);//set the components设置组件lgbtn.setBackground(Color.lightGray);nameinput.setPreferredSize(indim);pwdinput.setPreferredSize(indim);//add components添加组件jf.add(imjla);jf.add(namejla);jf.add(nameinput);jf.add(pwdjla);jf.add(pwdinput);jf.add(lgbtn);jf.add(rgbtn);jf.add(cb);看看运行效果不知道大家有没有注意到所有的元素排列格式都是按照代码中的顺序依次进行图片账户密码按钮这就是流式布局的特征所有元素会从左往右依次排列挤不下就去下一行接着依次排列。步骤4精进功能账号密码匹配跳出新界面事件与接口接下来我们需要用到接口它在JAVA编程语言中是一个抽象类型是抽象方法的集合接口通常以interface来声明。一个类通过继承接口的方式从而来继承接口的抽象方法。我们需要用到动作监听器。接口与类相似点一个接口可以有多个方法。接口相应的字节码文件必须在与包名称相匹配的目录结构中。接口与类的区别接口不能实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口不是被类继承了而是要被类实现接口支持多继承。格式…implements 接口名称[, 其他接口名称, 其他接口名称…, …] …实例在surface下新建一个class命名为LoginListener代码如下packagesurface;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassLoginListenerimplementsActionListener{publicvoidactionPerformed(ActionEvent e){}}到这里我们成功实现了这个方法大家只需要输入public class LoginListener implements ActionListener{}之后鼠标移动到ActionListener按F3就会出现剩下的代码不需要自己敲接下来我们要使账号密码匹配应该怎么做呢先看代码我们先在Start下加入如下代码注意放在jf.setVisible(true);之前。LoginListener llnewLoginListener();ll.namein2nameinput;ll.pwdin2pwdinput;ll.jfjf;//继承对象lgbtn.addActionListener(ll);然后补充Login Listenerpackagesurface;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importjavax.swing.JFrame;publicclassLoginListenerimplementsActionListener{JTextField namein2;JPasswordField pwdin2;JFrame jf;//Automatically called when a button is clicked监听到按钮被点击时自动调用publicvoidactionPerformed(ActionEvent e){String nametextnamein2.getText();String pwdtextpwdin2.getText();if(nametext.equals(123)){System.out.println(Account correct:nametext);if(pwdtext.equals(321)){jf.setVisible(false);//这一句代码用来隐藏前一个界面System.out.println(Password correct:pwdtext);Success ssnewSuccess();ss.test();//调用创建的另一个窗体}elseSystem.out.println(Wrong password,please check again.);}elseSystem.out.println(Account doesnt exist,please check again);System.out.println(the button is clicked);}}另一个窗体的创建类似Start我的代码Success如下packagelogface;importjava.awt.FlowLayout;importjavax.swing.JFrame;importpainting.DrawListener;publicclassSuccess{publicvoidtest(){// top container -form JFrame instantiate object→create a form objectJFrame jfnewJFrame();jf.setTitle(login interface);jf.setSize(1920,1080);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// process close关闭进程jf.setLocationRelativeTo(null);// centered居中显示FlowLayout flnewFlowLayout();// Fluid layout流式布局jf.setLayout(fl);jf.setVisible(true);// 可视化System.out.println(Welcome to your secret magical woods!);}}Start的完整代码如下packagelogface;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importjavax.swing.JCheckBox;publicclassLoginU{publicstaticvoidmain(String[]args){LoginU lunewLoginU();lu.initUI();}}publicvoidinitUI(){//top container -form JFrame instantiate object→create a form objectJFrame jfnewJFrame();jf.setTitle(login interface);jf.setSize(1280,600);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//process close关闭进程jf.setLocationRelativeTo(null);//centered居中显示FlowLayout flnewFlowLayout();//Fluid layout流式布局jf.setLayout(fl);Dimension indimnewDimension(330,30);//size尺寸没有这一设定登录会默认布满四周//create components创建组件//上半部分图片,大家自行按需修改图片路径D:\programming\eclipse-workspace\Battle\src\logface\Facebook_logo.pngImageIcon imagenewImageIcon(D:\\programming\\eclipse-workspace\\Battle\\src\\logface\\Facebook_logo.png);//不用\\会导致报错。因为\本身是转义字符//Image labelJLabel imjlanewJLabel(image);JLabel namejlanewJLabel(Account:);JLabel pwdjlanewJLabel(Password:);JCheckBox cbnewJCheckBox(Are you ready?);JTextField nameinputnewJTextField();JPasswordField pwdinputnewJPasswordField();JButton lgbtnnewJButton(log in);JButton rgbtnnewJButton(register);//set the components设置组件lgbtn.setBackground(Color.lightGray);nameinput.setPreferredSize(indim);pwdinput.setPreferredSize(indim);//add componentsjf.add(imjla);jf.add(namejla);jf.add(nameinput);jf.add(pwdjla);jf.add(pwdinput);jf.add(lgbtn);jf.add(rgbtn);jf.add(cb);LoginListener llnewLoginListener();ll.namein2nameinput;ll.pwdin2pwdinput;ll.jfjf;//对象传递lgbtn.addActionListener(ll);jf.setVisible(true);//可视化}}我们来看看运行效果okperfect总结swing包是我们创建页面的主要工具接口是我们实现更多功能的辅助工具。

相关新闻

从零设计智能充放电测试板:集成TP4056与MCU一键开关机方案

从零设计智能充放电测试板:集成TP4056与MCU一键开关机方案

1. 项目概述:一块“聪明”的测试板是如何炼成的最近在折腾一个便携式设备项目,核心需求是能用单节锂电池供电,同时要能输出一个稳定的、比电池电压更高的直流电压,比如5V或者12V,给其他模块用。这听起来简单&#xff0…

2026/7/28 19:52:47 阅读更多 →
基于RFID与ESP32的军棋智能裁判系统:硬件选型与实现详解

基于RFID与ESP32的军棋智能裁判系统:硬件选型与实现详解

1. 项目缘起:从“耍赖”到“智能裁判”的军棋对弈革新 军棋,这款承载着许多人童年记忆的策略棋类游戏,其魅力不仅在于排兵布阵的智慧,更在于“暗棋”模式下那种尔虞我诈、猜测与推理的乐趣。然而,也正是“暗棋”规则&a…

2026/7/28 19:52:47 阅读更多 →
Adobe-GenP 3.0:Adobe Creative Cloud终极激活指南与破解工具详解

Adobe-GenP 3.0:Adobe Creative Cloud终极激活指南与破解工具详解

Adobe-GenP 3.0:Adobe Creative Cloud终极激活指南与破解工具详解 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe Creative Cloud作为设计师和创意…

2026/7/28 19:52:47 阅读更多 →

最新新闻

C#-WPF-控件-CartesianChart图表-线性3(LineSeries)-MVVM模式(封装数据绑定类)

C#-WPF-控件-CartesianChart图表-线性3(LineSeries)-MVVM模式(封装数据绑定类)

知识点:1. 数据绑定(数据绑定类 与 图形操作在同一个类中)2. X轴上显示点数(主类 中) 3. 添加随机值在图表中 (值针对Y轴值)4. 清空图表5. 图标titel显示实例图表控件绑定 SeriesCollectionA&am…

2026/7/28 20:05:01 阅读更多 →
Python操作MySQL数据库进阶指南:连接池与事务管理

Python操作MySQL数据库进阶指南:连接池与事务管理

1. Python操作MySQL数据库全景指南作为数据驱动应用的核心组件,数据库操作一直是Python开发者必须掌握的硬技能。MySQL作为最流行的开源关系型数据库,与Python的配合堪称黄金组合。但很多开发者停留在基础CRUD阶段,对连接池、事务管理等进阶用…

2026/7/28 20:05:01 阅读更多 →
利用美国教育邮箱低成本获取AI开发工具权限:Dify部署与Claude注册实战指南

利用美国教育邮箱低成本获取AI开发工具权限:Dify部署与Claude注册实战指南

如果你最近在尝试部署 Dify 或者想体验 Claude 的最新模型,比如 Claude 3.5 Sonnet 或 Claude 3 Opus,那么一个绕不开的坎就是: 你需要一个能通过严格验证的邮箱来注册和绑定这些服务。 无论是 Dify 的邮件验证,还是 Anthropic 官方对 Claude 账号的审核,一个普通的个人…

2026/7/28 20:05:01 阅读更多 →
ElasticSearch-bulk批量操作增删改查(python实现)

ElasticSearch-bulk批量操作增删改查(python实现)

bulk有哪些类型的操作可以执行呢? # 1.bulk的语法是怎样的呢? 每一个操作要两个json串,语法如下: {"action": {"metadata"}} {"data"} # 2.bulk的操作有以下几种 (1)delete:删除一个文…

2026/7/28 20:05:01 阅读更多 →
Matlab实现火星探测车不确定性感知路径规划

Matlab实现火星探测车不确定性感知路径规划

1. 项目概述:当行星探测车遇上不确定性在火星表面崎岖的地形上,一辆探测车正面临生死抉择:左侧是看似平坦却可能暗藏流沙的区域,右侧是坡度陡峭但地质稳定的岩石带。传统轨迹规划算法可能会选择左侧"平坦"路径&#xff…

2026/7/28 20:05:01 阅读更多 →
详解变量提升和闭包的应用

详解变量提升和闭包的应用

文章目录堆栈内存变量提升带var和不带var的区别作用域链的拓展闭包什么是闭包闭包的应用堆栈内存 栈内存:作用域 提供一个供js代码自上而下执行的环境(代码都是在栈内存中执行)存储基本数据类型值释放:当栈内存被销毁&#xff0…

2026/7/28 20:03:52 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻