swing教程常用组件全解析:按钮、文本框实战用法及代码示例

admin 综合编程开发技术 2


是不是很多学 Swing 的新手朋友,一到用组件就发懵?看教程知道有按钮、文本框这些东西,可自己写代码时要么组件不显示,要么点了没反应;好不容易把按钮加上了,却不知道怎么让它 “干活”;文本框里输入的内容也拿不出来,急得抓头发?其实啊,Swing 的组件用法就像玩积木,每个组件都有固定的 “玩法”,学会按钮和文本框这两个最常用的,大部分界面交互都能搞定。今天兔子哥就带大家把这俩组件拆解开讲,从创建到实战用法,代码带注释,新手跟着练,很快就能上手,一起往下看吧!

一、先搞懂:啥是 Swing 组件?按钮和文本框有啥用?


核心问题:组件是不是就是界面上那些按钮、输入框?
对!Swing 组件就是构成界面的 “零件”,比如按钮(JButton)用来点击触发操作,文本框(JTextField)用来输入文字,标签(JLabel)用来显示说明文字。就像盖房子需要砖、窗户、门,做界面也需要这些组件组合起来。
为啥先学按钮和文本框?因为它们是交互的 “主力军”:
  • 按钮:用户点一下,程序就做相应的事(比如提交表单、计算结果)
  • 文本框:用户输入文字、数字,程序能拿到这些内容(比如输入姓名、年龄)

我刚开始学的时候,以为组件越复杂越好,后来发现把按钮和文本框用好,就能做出登录界面、数据录入工具这些实用程序 —— 基础组件才是最常用的。

二、按钮(JButton)全解析:从创建到加点击事件


核心问题:怎么让按钮显示在界面上?点了之后怎么让它干活?
按钮用法分两步:先创建按钮并显示,再给它加 “点击事件”(点了之后要做的事)。

步骤 1:创建按钮并添加到界面


java运行
import javax.swing.*;public class ButtonBasic {public static void main(String[] args) {// 创建窗口JFrame frame = new JFrame("按钮示例");frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);// 创建面板,用来放按钮JPanel panel = new JPanel();// 创建按钮:参数是按钮上显示的文字JButton btnClick = new JButton("点我试试");// 把按钮加到面板上panel.add(btnClick);// 面板加到窗口上frame.add(panel);// 显示窗口frame.setVisible(true);}}

运行后,窗口里会出现一个写着 “点我试试” 的按钮,能点但暂时没反应 —— 这是因为还没加事件。

步骤 2:给按钮加点击事件(核心功能)


想让按钮点了有反应,需要加 “ActionListener”,就像给按钮装个 “传感器”,点击时触发动作:
java运行
import javax.swing.*;import java.awt.event.*; // 事件处理需要的包public class ButtonAction {public static void main(String[] args) {JFrame frame = new JFrame("按钮事件示例");frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);JPanel panel = new JPanel();JButton btnClick = new JButton("点我弹窗");// 给按钮加点击事件btnClick.addActionListener(new ActionListener() {// 点击按钮时会自动执行这个方法public void actionPerformed(ActionEvent e) {// 这里写点击后要做的事,比如弹窗JOptionPane.showMessageDialog(null, "你点到我啦!");}});panel.add(btnClick);frame.add(panel);frame.setVisible(true);}}

运行后点按钮,会弹出一个提示框 —— 这就是按钮的核心用法,大部分交互都这么实现。

按钮常用小技巧


  • 改按钮文字:btnClick.setText("新文字");
  • 禁用按钮:btnClick.setEnabled(false);(按钮变灰,不能点击)
  • 按钮加图标:btnClick.setIcon(new ImageIcon("图片路径"));(需要图片文件)

三、文本框(JTextField)全解析:输入和获取内容


核心问题:怎么让用户在文本框输入内容?程序怎么拿到输入的文字?
文本框是 “输入工具”,用法关键是 “让用户输入” 和 “程序获取输入内容”。

步骤 1:创建文本框并显示


java运行
import javax.swing.*;public class TextBasic {public static void main(String[] args) {JFrame frame = new JFrame("文本框示例");frame.setSize(300, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);JPanel panel = new JPanel();// 创建文本框:参数是显示的列数(宽度)JTextField textField = new JTextField(15); // 能显示15个字符左右panel.add(textField);frame.add(panel);frame.setVisible(true);}}

运行后会出现一个可以输入文字的文本框,光标能闪烁,能打字 —— 但现在还拿不到输入的内容。

步骤 2:获取文本框内容(结合按钮实战)


通常文本框配合按钮使用:用户输入后点按钮,程序获取内容并处理。比如做个 “打招呼” 工具:
java运行
import javax.swing.*;import java.awt.event.*;public class TextGetContent {public static void main(String[] args) {JFrame frame = new JFrame("获取文本框内容");frame.setSize(350, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);JPanel panel = new JPanel();// 创建文本框和按钮JTextField textName = new JTextField(10);JButton btnGreet = new JButton("打招呼");// 按钮点击事件:获取文本框内容并弹窗btnGreet.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 用getText()方法获取文本框内容String name = textName.getText();// 如果没输入内容,给个提示if (name.isEmpty()) {JOptionPane.showMessageDialog(null, "请输入姓名");} else {JOptionPane.showMessageDialog(null, "你好," + name + "!");}}});// 把组件加到面板(加个标签说明)panel.add(new JLabel("请输入姓名:"));panel.add(textName);panel.add(btnGreet);frame.add(panel);frame.setVisible(true);}}

运行后输入姓名点按钮,会弹出 “你好,XX!” 的提示 —— 这就是文本框的核心用法,获取内容用getText()就行。

文本框常用小技巧


  • 设置默认文字:textField.setText("请输入...");
  • 清空内容:textField.setText("");
  • 密码框(输入时显示圆点):用JPasswordField替代JTextField,用法差不多

之前有朋友问,怎么限制文本框只能输入数字?这个稍微复杂点,新手先掌握基础用法,后面学 “事件监听” 再研究 —— 别急着一口吃成胖子。

四、按钮和文本框组合实战:做个简单计算器


核心问题:怎么把按钮和文本框结合起来做实用工具?
用这俩组件做个 “加法计算器”:两个文本框输入数字,点按钮计算结果。

完整代码(带注释)


java运行
import javax.swing.*;import java.awt.event.*;public class SimpleCalculator {public static void main(String[] args) {JFrame frame = new JFrame("简易加法计算器");frame.setSize(400, 200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);JPanel panel = new JPanel();// 创建组件JTextField textNum1 = new JTextField(5); // 第一个数字JLabel lblPlus = new JLabel("+"); // 加号标签JTextField textNum2 = new JTextField(5); // 第二个数字JButton btnCalc = new JButton("="); // 计算按钮JTextField textResult = new JTextField(8); // 显示结果// 结果框设为不可编辑(只能看不能输)textResult.setEditable(false);// 计算按钮事件btnCalc.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try {// 获取两个文本框的数字double num1 = Double.parseDouble(textNum1.getText());double num2 = Double.parseDouble(textNum2.getText());// 计算并显示结果textResult.setText(String.valueOf(num1 + num2));} catch (Exception ex) {// 输入非数字时提示错误textResult.setText("输入错误");}}});// 把组件加到面板panel.add(textNum1);panel.add(lblPlus);panel.add(textNum2);panel.add(btnCalc);panel.add(textResult);frame.add(panel);frame.setVisible(true);}}

效果说明


运行后能在两个文本框输入数字,点 “=” 按钮,结果会显示在第三个文本框里;如果输入字母,会显示 “输入错误”—— 这个小工具虽然简单,但用到了按钮事件、文本框获取内容、异常处理,很适合新手练手。

五、新手常踩的组件坑及解决办法


  1. 组件不显示在界面上:要么没加到面板 / 窗口(忘了add()方法),要么窗口没设可见(漏了setVisible(true))。记住组件要 “层层添加”:组件→面板→窗口。
  2. 按钮点击没反应:没加addActionListener,或者事件里的代码写错了。可以先在事件里加个简单弹窗测试,确认事件是否生效。
  3. 获取文本框内容为 null:刚创建的文本框内容是空字符串(""),不是 null,判断空用isEmpty()更靠谱,别用== null
  4. 中文显示乱码:文本框里的中文乱码,一般是项目编码问题,右键项目→“Properties”→“Resource” 选 “UTF-8” 试试。

最后跟大家说句实在的,按钮和文本框是 Swing 的 “敲门砖”,把这俩练熟了,学其他组件(比如下拉框、复选框)会容易很多。我刚开始做计算器时,光处理输入非数字的情况就改了好几次,后来发现用try-catch捕获异常特别方便 —— 实战才能发现问题,别光看不动手。
别害怕代码报错,组件用法就那么些固定模式,多抄几遍示例代码,改改里面的文字和功能,慢慢就记住了。按钮点一下有反应,文本框能输入能获取,这种即时反馈的感觉特别好,能让你越学越有劲儿。希望这篇教程能帮到你,动手试试做个自己的小工具吧!

标签: .setDefaultCloseOperation .setLocationRelativeTo

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~