Java Swing 界面开发入门小教程

发布时间:2026/8/2 6:32:42
Java Swing 界面开发入门小教程 一、基础概念扫盲两大工具包分工Java 做桌面界面主要依赖两套工具库功能各有侧重配合使用javax.swing核心组件包升级版界面工具所有可视化窗口、按钮、输入框都由它提供类名均以大写 J 开头是开发的主力。java.awt样式辅助包早期界面工具现在主要用于设置颜色、字体、尺寸、布局规则不负责生成可视化组件。包与导入package 包名代码的文件夹分类写在代码文件最顶部用于管理多个代码文件避免重名冲突。示例package com07.zyf0730;import 导入相当于 “借用工具”要使用窗口、按钮等类必须先导入对应包。批量导入推荐新手用import javax.swing.*;、import java.awt.*;单个导入import javax.swing.JFrame;核心语法前提界面开发完全基于 Java 面向对象基础只需记住 3 条核心一个界面对应一个类public class 类名 { }界面绘制逻辑封装在方法里public void showUI() { }程序入口固定public static void main(String[] args) { }在入口中创建类对象并调用绘制方法。二、开发前准备固定代码骨架所有 Swing 界面都可以套用以下通用模板先搭架子再填内容能大幅减少报错。// 1. 包声明最顶部packagecom07.zyf0730;// 2. 导入工具包importjavax.swing.*;importjava.awt.*;// 3. 定义界面类publicclassLoginUI{// 4. 界面绘制方法所有窗口、组件代码都写在这里publicvoidshowUI(){// 后续代码填充区}// 5. 程序入口固定写法publicstaticvoidmain(String[]args){LoginUIuinewLoginUI();ui.showUI();}}三、界面开发标准步骤分步详解****步骤 1创建主窗口并设置基础属性主窗口 JFrame 是所有组件的容器相当于界面的 “外框”必须优先创建。常用属性设置// 创建窗口对象JFramejfnewJFrame();// 设置窗口标题左上角文字jf.setTitle(登录界面 V1.0);// 设置窗口尺寸参数1宽度参数2高度单位像素jf.setSize(400,450);// 设置窗口弹出位置参数1距屏幕左侧距离参数2距屏幕顶部距离jf.setLocation(200,200);// 设置关闭规则点击右上角叉号时直接退出整个程序jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置布局管理器使用流式布局组件自动从左到右、从上到下排列FlowLayoutflownewFlowLayout();jf.setLayout(flow);步骤 2创建所需组件组件就是界面上的按钮、输入框、文字等 “零件”按需创建即可。运行// 文字标签仅展示文本不可交互JLabelnameLabelnewJLabel(账号:);JLabelpwdLabelnewJLabel(密码:);// 普通文本输入框参数为输入框大致宽度字符数JTextFieldnameInputnewJTextField(35);// 密码输入框输入内容显示为黑点JPasswordFieldpwdInputnewJPasswordField(35);// 按钮参数为按钮上显示的文字JButtonloginBtnnewJButton(登录);// 图片组件先加载本地图片再放入标签中显示ImageIconheaderImgnewImageIcon(C:\\Users\\Desktop\\logo.png);JLabelimgLabelnewJLabel(headerImg);步骤 3将组件添加到窗口创建好的组件必须手动添加到窗口中添加顺序 界面从上到下的显示顺序。jf.add(imgLabel);jf.add(nameLabel);jf.add(nameInput);jf.add(pwdLabel);jf.add(pwdInput);jf.add(loginBtn);步骤 4显示窗口所有组件添加完成后最后执行窗口显示这一步必须放在所有代码末尾。jf.setVisible(true);四、常用组件用法速查五、样式美化字体与组件尺寸字体设置Font用于修改组件文字的字体、字号、粗细。// 语法new Font(字体名称, 样式常量, 字号)// 样式可选Font.PLAIN普通、Font.BOLD加粗、Font.ITALIC斜体FonttextFontnewFont(微软雅黑,Font.BOLD,16);// 给组件设置字体nameLabel.setFont(textFont);loginBtn.setFont(textFont);组件尺寸设置Dimension用于单独调整按钮、输入框的宽高不影响窗口整体大小。// 语法new Dimension(宽度, 高度)DimensionbtnSizenewDimension(100,40);DimensioninputSizenewDimension(280,30);// 给组件设置首选尺寸loginBtn.setPreferredSize(btnSize);nameInput.setPreferredSize(inputSize);pwdInput.setPreferredSize(inputSize);六、完整示例登录界面可运行代码packagecom07.zyf0730;importjavax.swing.*;importjava.awt.*;publicclassLoginUI{publicvoidshowUI(){// 1. 创建并设置主窗口JFramejfnewJFrame();jf.setTitle(登录界面 V1.0);jf.setSize(400,450);jf.setLocation(200,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLayout(newFlowLayout());// 2. 定义统一样式FontlabelFontnewFont(微软雅黑,Font.BOLD,16);DimensioninputSizenewDimension(280,30);DimensionbtnSizenewDimension(100,40);// 3. 创建组件ImageIconimgnewImageIcon(C:\\Users\\Desktop\\logo.png);JLabelimgLabelnewJLabel(img);JLabelnameLabelnewJLabel(账号:);nameLabel.setFont(labelFont);JTextFieldnameInputnewJTextField(35);nameInput.setPreferredSize(inputSize);JLabelpwdLabelnewJLabel(密码:);pwdLabel.setFont(labelFont);JPasswordFieldpwdInputnewJPasswordField(35);pwdInput.setPreferredSize(inputSize);JButtonloginBtnnewJButton(登录);loginBtn.setFont(labelFont);loginBtn.setPreferredSize(btnSize);// 4. 添加组件到窗口jf.add(imgLabel);jf.add(nameLabel);jf.add(nameInput);jf.add(pwdLabel);jf.add(pwdInput);jf.add(loginBtn);// 5. 显示窗口jf.setVisible(true);}publicstaticvoidmain(String[]args){newLoginUI().showUI();}}七、注意事项1.导包必须正确按钮类用 javax.swing.JButton不要误用 java.awt.Button两者不兼容会报类型错误。2.缺少 import 语句时所有组件类都会爆红报错。3.窗口显示语句放最后setVisible(true) 必须写在所有 add() 操作之后。写在前面会导致组件加载不全窗口出现空白。4.变量不可重复定义同一个方法内不能出现两个同名变量比如两次定义 JButton btn …否则会报 “重复变量” 错误。5.对象调用不能省略前缀所有属性设置都必须通过对象调用比如 jf.setTitle(…)不能直接写 .setTitle(…)。6.图片路径格式正确Windows 系统中文件路径分隔符要用双反斜杠 \路径错误会导致图片不显示且不报错排查难度高。7.关闭规则不可遗漏必须写 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)否则关闭窗口后程序仍在后台运行占用内存。8.编辑器输入模式若输入时光标变粗、输入内容会覆盖后面的文字是误触了 Insert 键进入覆盖模式再按一次 Insert 即可恢复正常插入模式。9.布局必须设置窗口不设置布局时组件会默认铺满窗口导致排版混乱流式布局是新手最易上手的布局方式。10. JFrame 定义的窗口关闭策略常量:前面的文字是常量名后面的数字是它的实际值。EXIT_ON_CLOSE 对应 3意思是点击关闭按钮时退出整个程序DISPOSE_ON_CLOSE 对应 2是关闭当前窗口但不结束程序HIDE_ON_CLOSE 对应 1只是把窗口藏起来还在后台运行DO_NOTHING_ON_CLOSE 对应 0点关闭按钮完全没反应得自己写事件处理逻辑才行。