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:34阅读更多 →
基于RFID与ESP32的军棋智能裁判系统:硬件选型与实现详解

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

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

2026/7/28 19:52:33阅读更多 →
从玩具到工具:构建稳定可复用的生成式AI自动化流程

从玩具到工具:构建稳定可复用的生成式AI自动化流程

最近在尝试把一些代码片段转成动画时,发现了一个挺有意思的现象:很多开发者拿到一个酷炫的生成工具,第一反应就是“跑起来看看效果”。这当然没错,但往往跑通一次之后,就卡在了“怎么让它稳定、批量地为我工作”这个坎…

2026/7/28 19:50:33阅读更多 →
DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

1. 项目背景与核心目标 这个标题描述的是DeepSeek-V3.2-Exp模型在特定硬件配置下的性能表现。从标题可以拆解出几个关键信息点: 模型版本:DeepSeek-V3.2-Exp(实验版本) 上下文长度:64K tokens 处理能力:…

2026/7/28 21:04:52阅读更多 →
终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 在当今数字时代&…

2026/7/28 21:04:52阅读更多 →
Vue Mixin核心原理与实战应用指南

Vue Mixin核心原理与实战应用指南

1. Vue Mixin 的本质与核心价值在Vue.js开发中,Mixin(混合)是一种极为灵活的代码复用机制。简单来说,它就像是一个可插拔的功能模块包,允许你将一组组件选项、逻辑方法或生命周期钩子"混入"到多个组件中。不…

2026/7/28 21:04:52阅读更多 →
物联网硬件安全方案:SE050芯片与PIC32MZ的实战应用

物联网硬件安全方案:SE050芯片与PIC32MZ的实战应用

1. 为什么物联网设备需要硬件级安全方案在智能家居、工业4.0等场景中,我们常遇到这样的困境:某品牌智能门锁被曝存在漏洞,攻击者通过Wi-Fi信号就能远程开锁;工厂传感器数据在传输过程中被篡改,导致生产线误判停机。这些…

2026/7/28 21:04:52阅读更多 →
Python开发实战:从基础到工程化的完整指南

Python开发实战:从基础到工程化的完整指南

1. Python学习路线全景解析作为一名从2010年开始接触Python的老程序员,我见证了这门语言从科学计算工具成长为全能型选手的完整历程。今天想和大家系统性地聊聊Python学习的核心路径,特别是那些官方文档不会告诉你的实战经验。不同于市面上零散的教程&am…

2026/7/28 21:04:52阅读更多 →
MSC外泌体怎么从科研制备到规模化生产?Rooster HD-EV连续培养体系思路

MSC外泌体怎么从科研制备到规模化生产?Rooster HD-EV连续培养体系思路

摘要: MSC外泌体生产从科研级制备走向规模化时,上游培养体系会成为影响产量、纯度、成本和批次一致性的核心变量。传统“扩增—洗涤—换液—收集”流程操作复杂、颗粒损耗风险高、培养基背景可能影响下游纯化和表征。Rooster HD-EV以化学成分限定、低颗粒…

2026/7/28 21:02:51阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!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:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

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

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

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

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

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

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →