问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java 中 JTextArea 和 JTextField 的有什么区别?

发布网友 发布时间:2022-04-26 05:09

我来回答

2个回答

热心网友 时间:2022-06-21 00:44

文本输入框、密码输入框

  文本输入框包括两种,单行文本输入框 (JTextField) 和多行文本输入框 (JTextArea)。密码输入框则只有一种 (JPasswordField)。JPasswordField 是 JTextField 的子类,它们的主要区别是 JPasswordField 不会显示出用户输入的东西,而只会显示出程序员设定的一个固定字符,比如 '*'。

  下面的示例图和代码是 JTextField、JPasswordField 和 JTextArea 的示例:

 import javax.swing.*;
 import javax.swing.event.*;

 public class TestTexts extends JFrame {

  private JLabel label = new JLabel("Status");
  private JTextField textField;
  private JPasswordField pwdField;
  private JTextArea textArea;

  public TestTexts() {
   super("Test Texts");
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   getContentPane().setLayout(new java.awt.FlowLayout());

   textField = new JTextField(15);
   
   textField.addCaretListener(new CaretListener() {
    public void caretUpdate(CaretEvent e) {
     // 如果改变了内容,就可以即时更新 label 显示的内容
     label.setText(textField.getText());
    }
   });

   pwdField = new JPasswordField(15);
   pwdField.setEchoChar('#');

   textArea = new JTextArea(5, 15);
   textArea.setLineWrap(true);

   getContentPane().add(textField);
   getContentPane().add(pwdField);
   getContentPane().add(textArea);
   getContentPane().add(label);

   setSize(200, 200);
  }

  public static void main(String[] args) {
   TestTexts tt = new TestTexts();
   tt.show();
  }
 }

  上例中,我们构造了一个宽度为 15 个字符的单行文本框 (textField = new JTextField(15);),并使用 addCaretListener 方法添加了一个 CaretListener (textField.addCaretListener ...)。CaretListener 监听文本光标的移动事件。当用户使用键盘、鼠标等移动了文本光标在 JTextField 中的位置时触发这个事件。我们需要重载 caretUpdate(CaretEvent e) 对事件进行处理 (public void caretUpdate(CaretEvent e) ...)。这样,我们可以在这里做类似 VB 中 TextBox 的 OnChange 事件中做的事情。

  JTextField 有 5 个构造方法,常用其中的四个:

  JTextField()
  JTextField(int columns),如上例 textField = new JTextField(15);
  JTextField(String text)
  JTextField(String text, int columns)

  其中,参数 text 是单行文本框的初始内容,而 columns 指定了单行文本框的宽度,以字符为单位。JTextField 中的文本内容可以用 getText() 方法获得。也可以用 setText 方法指定 JTextField 中的文本内容。

  JPasswordField 是 JTextField 的子类,其构造方法也是类似的。JPasswordField 提供了 setEchoChar(char ch) 方法设置为了隐藏密码而显示的字符,默认为 '*' 字符,上例中则设置为了 '#' 字符 (pwdField.setEchoChar('#');)。与 JTextField 一样,JPasswordField 也用 getText 方法和 setText 获得或者设置文本内容 (当然在用户界面上是隐藏的)。

  JTextField 是单行文本框,不能显示多行文本,如果想要显示多行文本,就只好使用多行文本框 JTextArea 了。JTextArea 有六个构造方法,常用的也是四个:

  JTextArea()
  JTextArea(int rows, int columns)
  JTextArea(String text)
  JTextArea(String text, int rows, int columns) 

  text 为 JTextArea 的初始化文本内容;rows 为 JTextArea 的高度,以行为单位;columns 为 JTextArea 的宽度,以字符为单位。如上例中就构造了一个高 5 行,宽 15 个字符的多行文本框 (textArea = new JTextArea(5, 15);)。

  多行文本框默认是不会自动折行的 (不过可以输入回车符换行),我们可以使用 JTextArea 的 setLineWrap 方法设置是否允许自动折行。setLineWrap(true) 是允许自动折行,setLineWrap(false) 则是不允许自动折行。多行文本框会根据用户输入的内容自动扩展大小,不信,自己做个实验——如果不自动折行,那么多行文本框的宽度由最长的一行文字确定的;如果行数据超过了预设的行数,则多行文本框会扩展自身的高度去适应。换句话说,多行文本框不会自动产生滚动条。怎么办?后面讲到滚动窗格 (JScrollPane) 的时候,你就知道了。

  多行文本框里文本内容的获得和设置,同样可以使用 getText 和 setText 两个方法来完成。

热心网友 时间:2022-06-21 00:44

JTextArea,可以在里面输入多行文字,多行文本框
JTextField ,只能在里面输入一行文字,单行文本框
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
泰迪必备用品有哪些? 养泰迪狗新手需要准备什么东西 谁知道白色泰迪狗的生活用品需要哪些? 美国什么选举时间 离西双版纳最近的地州必去景点 技嘉945GCM-S2L ( 英特尔 945G )主板配什么显卡好 5年的台式电脑了想更新配置,反应速度有点慢。该如何提高,求大神指教... e2160超频设置 如何将多个excel表格合并成一个如何把多个工作簿合并成一个excel 上海社保最低比例是多少钱 迅捷pdf转换器如何去除pdf文件密码 果果桌面秀下载 征地、宅基地法律纠纷处理一本通的图书目录 怎么样在java中插入文本框? java 高手请进 Jtextarea自动换行后按行获得文本 农村宅基地纠纷案例 玛丽亚凯莉高清演唱会下载地址 java中 JTextArea.append(String.valueOf(sum))的意思是什么_百度知 ... 云南旱情 Java Swing中Jtextarea自动换行后如何按行获得文本? 谁有Mariah Carey的演唱会啊!!!??? java怎么往文本框里加内容 迅捷pdf转换器机器码为877932751求破解 推荐Mariah Carey最经典的一场演唱会 我忘记是哪年的了 还要提供下载地址噢 新冠病毒的英文缩写是什么? 如何将jTextArea里面的内容导出到txt文本文档中 新冠简称是什么? 果果桌面秀 jtextArea里怎么设置文本颜色 siteserver cms内容管理系统中如何修改已创建的站点端口号 悍夫(异世()txt微盘 k589是到菜园坝还是龙头寺的火车站 迅捷pdf编辑器破解版 v1.9.5.0如何破解,知道的朋友告诉一下? 手机天气预报的两个温度、阵雨多云分别指的什么时间段? 迅捷PDF转换器机器码702924129求破解码 蜂蜜跟蒜头能一起吃吗 哪位大神可以给一个破解迅捷pdf转换器的注册码啊?机器码591969513 java中文件选择器组件读取一个txt文件到JTextArea中,我想让它一行一行的慢慢显示出来,怎么做呢 2018.11.5计划到云南昆明,石林,玉龙雪山等地玩出行雪穿什么样的衣服,天气如何 java的swing如何编写点击一次按键在JTextArea显示一行字 订立政府采购合同应采取什么方式? 蜂蜜能和蒜头一起吃吗 广州09提前批高中有哪几间? java中,如何在JTextArea 里设置文字的对齐方式?(居中,居左,居右) 云南12月2号到7号的天气预报 求守护甜心里唯世和亚梦的亲密图! 政采协议是什么? 河南南阳农村宅基地纠纷实例,示助! 请问java里的JTextField文本框怎么设置大小? 农村宅基地纠纷问题