文本域、标签、密码域、文本区、滚动窗格——文本输入

article/2025/9/24 20:55:46

文本域

将文本域添加到窗口的常用办法就是将它添加到面板或者其他的容器中:

JPanel panel = new JPanel();
JTextField textField = new JTextField("Default input", 20);
panel.add(textField);

上面的代码添加一个文本域,同时传递“Default input”,进行初始化。构造器的第二个参数设置了文本域的宽度。这里的宽度就是当前使用字体的下一个字符的宽度。如果希望文本域最多能输入 n 个字符,就应该把宽度设置为 n 列。实际上,应该将最大输入长度再多设 1 ~ 2 字符。
如果布局管理器需要缩放这个文本域,它会调节文本域的大小。在 JTextField 的构造器中设定的宽度并不是用户能输入的字符的个数的上限。用户可以输入更长的字符串,但是当文本长度超过文本域长度时输入就会滚动。用户通常不会喜欢滚动文本域,所以应该尽量把文本域设置的宽一些。如果需要在运行时重新设置列数,可以使用setColumns 方法。

使用setColumns 方法改变了一个文本域的大小之后,需要调动包含这个文本框的容器的 revalidate 方法。
textField.setColumns(10);
panel.revalidate();
revalidate 会重新计算容器内所有组件的大小,并且对他们进行布局。它并不是立即改变组件的大小,而是先给组件加上要修改的标记。这样避免了修改组件大小带来的重复计算。

  • JTextField(int cols)
    构造一个给定列数的空JTextField对象。

  • JTextField(String text, int cols)
    构造一个给定列数,给定初始字符串的JTextField对象

  • int getColumns()

  • void setColumns(int cols)
    获取或设置文本域使用的列数

  • void revalidate()
    重现计算组件的位置和大小

  • void setFont(Font f)
    设置组件的字体

  • void validate()
    重现计算组件的位置和大小。如果组件是容器,容器中包含的所有组件的位置和大小也被重现计算

  • Font getFont()
    获取组件的字体


标签和标签组件

  • JLabel(String text)
  • JLabel(Icon icon)
  • JLabel(String text, int align)`
  • JLabel(String text, Icon icon, int align)`
    text :标签中的文本
    icon:标签中的图标
    align:常量,LEFT(默认),CENTER,RIGHT
  • String getText()
  • void setText(String text)
    获取或设置标签的文本
  • Icon getIcon()
  • void setIcon(Icon icon)
    获取或设置标签的图标

密码域

密码域是一种特殊的文本域。用户输入的字符不显示出来。Swing 提供了JPassworldField类来实现这样的文本域。

  • JPasswordField(String text, int columns)
    构造一个新的密码域对象
  • void setEchoChar(char echo)
    为密码域设置回显字符。注意:独特的观感可以选择自己的回显字符。 0 表示重新设置为默认的回显字符。
  • char[] getPassword()
    返回密码域中的文本。为了安全起见,在使用之后应该覆盖返回的数组内容。

文本区

当用户输入的文本超过一行时,可以输入多行文本,并以“Enter”键换行。每行以“\n”结尾就需要使用JTextArea组件来接收这样输入。在构造器中可以指定文本的行数和列数:
textArea = new JTextArea(8, 40); // 8行1040列
处于稳妥考虑,列数可以设置大一些。此外,用户并不受限于指定的行数和列数,当输入过长时,文本会滚动。还可以用 setColumns 方法改变列数,用 setRows 改变行数。这些数值只是首选大小——布局管理器会对文本区进行缩放。
如果文本区的文本超出显示的范围,那么剩下的文本就会被剪裁掉。可以通过开启换行特性来避免剪裁过长的行。
text.setLineWrap(true); // 长的行被剪裁掉
换行只是视觉效果,文档中的文本并没有改变,在文本中并没有 \n 字符。


滚动窗格

在Swing 中,文本区没有滚动条。如果需要滚动条,可以将文本插入到滚动窗格中:
textArea = new JTextArea(8, 40);
JScrollPane scrollPane = new JScrollPane(textArea)

当滚动窗格管理文本区的视图时,如果文本超出了文本区可以显示的范围,滚动条就会自动的出现,并且,在删除部分文本后,当文本能显示在文本区范围内时,滚动条会自动的消失。滚动是有滚动窗格内部处理的,编程时无需无需处理滚动事件。所以,要想为组件添加滚动条,只需要将他们放入一个滚动个窗口中即可。


综合案例:

在下面的程序中

  • 首先,申请了文本域和密码域,为文本域和密码域申请一个面板,并把面板的布局设置为窗格布局。为文本域和密码域添加上用户名和密码的标签。最后,将该面板放置到框架的最上面。
  • 然后,创建一个文本区对象,用来存储显示输入的用户和密码,为文本区添加滚动窗口。这样,当行数很多时会出现窗口滚动,少的时候滚动消失,方便用户查看。最后,将该画板放到框架的中间区域。
  • 最后,创建一个按钮,目的是点击按钮,把写好的额用户名和密码传输到文本区内显示。为按钮进行动作监听和相应一系列操作。最后,把按钮添加到框架的最下面。

呈现的效果图在最后

package text;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class TextComponentFrame extends JFrame{private static final long serialVersionUID = 1L;public static void main(String[] args) {TextComponentFrame textComponentFrame = new TextComponentFrame();textComponentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);textComponentFrame.setVisible(true);}public static final int TEXTAREA_ROWS = 8;public static final int TEXTAREA_COLUMNS = 20;public TextComponentFrame(){final JTextField textField = new JTextField();      //申请文本域final JPasswordField passwordField = new JPasswordField();      //申请密码域JPanel northPanel = new JPanel();       //创建一个画板northPanel.setLayout(new GridLayout(2, 2));     //创建 2x2 窗格布局northPanel.add(new JLabel("User Name: ", SwingConstants.RIGHT));    //在画板右边添加用户名标签northPanel.add(textField);northPanel.add(new JLabel("Password: ", SwingConstants.RIGHT));     //在画板右边添加密码标签northPanel.add(passwordField);add(northPanel, BorderLayout.NORTH);        //将画板添加到框架上面final JTextArea textArea = new JTextArea(TEXTAREA_ROWS, TEXTAREA_COLUMNS); //创建文本区对象JScrollPane scrollPane = new JScrollPane(textArea);         //为文本区添加滚动条add(scrollPane, BorderLayout.CENTER);           //将滚动区域添加到画板中间JPanel southPanel = new JPanel();       //创建一个画板,放在框架下方JButton insertButton = new JButton("insert");       //创建一个插入按钮southPanel.add(insertButton);       //将按钮添加到画板上insertButton.addActionListener(new ActionListener(){    //为按钮添加动作监听public void actionPerformed(ActionEvent event){     //监听到按钮后所要回应的动作textArea.append("User name: " + textField.getText() + " Password: "+ new String(passwordField.getPassword()) + "\n");}});     add(southPanel, BorderLayout.SOUTH);    //把插入按钮添加到框架的下面pack();}private static final int DEFAULT_WIDTH = 700;private static final int DEFAULT_HEIGHT = 500;public Dimension getPreferredSize() {return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);}
}

在这里插入图片描述

  • JTextArea(String text, int rows, int cols)
    构造一个新的文本区对象

  • void setColumns(int cols)
    设置文本区应该使用的首选列数

  • void setRows(int rows)
    设置文本区应该使用的首选行数

  • void append(String newText)
    将给定的文本追加到文本区中已有的文本的尾部

  • void setLineWrap(boolean wrap)
    打开或关闭换行

  • `void setWrapStyleWord(boolean world)**
    如果word 是true,超长的行会在字边框处换行。如果为false,超长的行被截断而不考虑字边框

  • void setTabSize(int c)
    将制表符设置为c列。注意:制表符不会被转化为空格

  • JScrollPane(Component c)
    创建一个滚动窗格,用来显示指定组件的内容。滚动条自动过得出现或消失


http://chatgpt.dhexx.cn/article/dlGYId6H.shtml

相关文章

第十三篇、文本框、密码框和文本域。

文章目录 前言一、文本框、密码框和文本域之间的对比二、代码示例1.文本框2.密码框3.文本域 总结 前言 上一篇我们共同学习了下拉框和列表框,本篇我们将学习文本框、密码框和回顾我们之前学习的文本域。 一、文本框、密码框和文本域之间的对比 文本框:…

java:文本域的简单使用

文本域的简单使用 一、关键代码二、简单说明三、流程图四、源码(一)、源码A(二)、源码A的运行效果 五、结语六、定位日期 一、关键代码 常见的创建类方式,创建文本域。需要注意添加相关的包类,具体可看源码…

HTML|下拉框和文本域、文件域

HTML|下拉框和文本域、文件域 1.下拉框 在平时我们填问卷或者冲浪的时候做筛选的时候都会遇到下拉框&#xff0c;html写一个下拉框的方式是使用select标签&#xff0c;name和id是默认属性 <select name"1" id""></select>在select标签内部可…

20、HTML <textarea>标签(文本域)

在使用表单时&#xff0c;例如姓名、年龄字段我们可以使用单行文本框&#xff0c;但是当涉及到描述信息&#xff0c;内容比较多时&#xff0c;单行文本框很有可能放不下所有的内容&#xff0c;这时就需要用到多行文本框。 在 HTML 中&#xff0c;使用 <textarea> 标签来…

概率论公式整理

1、排列与组合公式 2、加法和乘法原理 3、随机试验和随机事件 4、基本事件、样本空间和事件  5、事件的关系与运算 6、概率的公理化定义 7、古典概型  8、几何概型 9、加法公式 10、减法公式 11、条件概率 12、乘法公式 13、独立性 14、全概率公式 15、贝叶斯…

古典概率,条件概率,全概率

文章目录 概率论的基本概念排列数组合数例题 古典概率例题例题 联合概率条件概率例题 条件概率的推广例题 全概率公式例题 贝叶斯公式例题 概率论的基本概念 排列数 组合数 例题 古典概率 例题 例题 联合概率 条件概率 例题 条件概率的推广 例题 全概率公式 例题 贝叶斯公式 例…

《高数叔》概率论与数理统计期末总复习笔记(持续更新中)

文章目录 一、随机时间与概率---day11.随机事件与样本空间的概念2.事件的关系&#xff08;集合之间的关系&#xff09;3.事件的运算律---交换律-结合律-分配律-德摩根律4.概率的概念和性质5.古典概型6.条件概率7.乘法定理8.全概率公式9.贝叶斯公式全概率&贝叶斯举例 10.事件…

概率论发展史上的几个经典问题

1.巴拿赫的火柴盒问题 巴拿赫 Stefan Banach 是 20 世纪初最重要的数学家之一——如果你对流行数学感兴趣&#xff0c;你就会听说过 Banach-Tarski 悖论&#xff1b;如果你做过任何严肃的线性代数&#xff0c;你就会知道巴拿赫空间&#xff1b;如果你读过《破解数学》&#xf…

古典概型,条件概率,贝叶斯公式

概率的定义&#xff0c;性质 定义 设 E E E 是随机试验&#xff0c; S S S 是它的样本空间。    对于 E E E 的每一个事件 A A A 赋予一个实数&#xff0c;记为 P ( A ) P(A) P(A)&#xff0c;称为事件 A A A 的概率。    如果集合函数 P ( ⋅ ) P(\, \boldsymbo…

古典概率基础

1. 抛硬币问题&#xff1a;(二项分布) 一般地&#xff0c;抛硬币n次&#xff0c;其中正面出现k次的情况是, 所以正面出现k次的概率为 练习&#xff1a;使用数值或者解析方法&#xff0c;分析n->无穷的情况&#xff0c;得出结论。 2. 掷骰子 1.用列举法枚举骰子的情况 2.…

古典概率习题

对于至少有一个人中奖&#xff0c;我们都要将其转换为没有人中奖&#xff0c;然后再拿1减去这个概率

统计-4 概率、古典概率

概率 描述事件发生可能性的指标&#xff1b; 假设4个人要出去玩&#xff0c;要决定是否带伞&#xff0c;因此对事件 A “明天会下雨”估计&#xff0c;甲说100%可能下雨&#xff0c;乙说70%&#xff0c;丙说30%&#xff0c;丁说0%肯定不下雨&#xff1b;这些数字代表了每个人对…

C3: 古典概率/几何概率/概率定义及性质/条件概率

》》点赞&#xff0c;收藏关注&#xff0c;理财&技术不迷路《《 目录&#xff1a; 3. 古典概率Classical Probability 频率概率&#xff1a; 古典概型&#xff1a; 这个例子&#xff0c;n的区别就是指定和没有指定。 后面365*364******* 意思是每个人的生日都不一样&…

古典概率,排列组合和贝叶斯定理(学习笔记)

第一次用CSDN写博客&#xff0c;其实主要目的是用来自己做统计学笔记归纳。 我现在是在外国就读统计与数据分析本科。其实本人以前在国内是个数学白痴&#xff0c;只是出国了突然就成了数学好..而且也是听朋友说读统计数据分析以后找工作不愁&#xff0c;所以就误打误撞近了这…

古典概率,先验概率,后验概率,贝叶斯分类器

古典概率&#xff1a;随机现象所能发生的事件是有限的、互不相容的,而且每个基本事件发生的可能性相等。 两个特点&#xff1a; 一是试验的样本空间有限&#xff0c;如掷硬币有正反两种结果&#xff0c;掷骰子有6种结果等&#xff1b; 二是试验中每个结果出现的可能性相同&am…

app测试和app接口测试要点详解

一、app测试要点 1.安装、卸载&#xff1a;测试app能否正常安装或者卸载 2.app升级&#xff1a;本地升级&#xff0c;在线升级&#xff0c;原数据是否正常 3.功能性 不同平台一致性 4稳定性 系统交互,低电量,蓝牙耳机 5.权限 6.正常场景 基本功能 7.异常场景 无电,无网 …

App测试流程及测试点

目录 1 APP测试基本流程1.1 流程图1.2 测试周期1.3 测试资源1.4 日报及产品上线报告 2 App测试点2.1 安全测试2.1.1 软件权限2.1.2 安装与卸载安全性2.1.3 数据安全性2.1.4 通讯安全性2.1.5 人机接口安全性 2.2 安装、卸载测试2.2.1 安装2.2.2 卸载 2.3 UI测试2.3.1 导航测试2.…

APP_测试流程(测试点)

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。 1.3测试资源 测试任务开始前,检查各项测试资源。 --产品功能需求文档; --产品原型图…

ARP协议工作流程

ARP协议&#xff1a;由IP地址获取物理地址的TCP/IP协议。 当主机A与主机B要通信时&#xff0c;以下是工作流程&#xff1a; 1、先根据路由表&#xff0c;确定B的IP地址&#xff0c;然后查询本地ARP缓存表看是否能匹配到B的MAC地址。 2、如何没匹配到B的MAC地址&#xff0c;则…