模块 java.desktop

类 JTextField

所有已实现的接口:
ImageObserver , MenuContainer , Serializable , Accessible , Scrollable , SwingConstants
已知子类:
DefaultTreeCellEditor.DefaultTextField , JFormattedTextField , JPasswordField

@JavaBean (defaultProperty ="UIClassID", description ="A component which allows for the editing of a single line of text.") public class JTextField extends JTextComponent implements SwingConstants
JTextField 是一个允许编辑单行文本的轻量级组件。有关使用文本字段的信息和示例,请参阅 The Java Tutorial. 中的 如何使用文本字段

JTextField 旨在与 java.awt.TextField 源代码兼容,这样做是合理的。该组件具有 java.awt.TextField 类中没有的功能。应该咨询超类以获得额外的能力。

JTextField 有一个方法来建立用作被触发的动作事件的命令字符串的字符串。 java.awt.TextField 使用字段的文本作为 ActionEvent 的命令字符串。如果不是nullJTextField 将使用通过setActionCommand 方法设置的命令字符串,否则它将使用字段的文本作为与java.awt.TextField 的兼容性。

不直接提供方法 setEchoChargetEchoChar 以避免可插入外观的新实现无意中暴露密码字符。为了提供类似密码的服务,一个单独的类 JPasswordField 扩展了 JTextField 以提供具有独立可插入外观的服务。

可以通过为 TextEvent 添加 TextListener 来监视 java.awt.TextField 的变化。在基于 JTextComponent 的组件中,更改从模型通过 DocumentEvent 广播到 DocumentListenersDocumentEvent 给出更改的位置和更改的类型(如果需要)。代码片段可能类似于:


    DocumentListener myListener = ??;
    JTextField myArea = ??;
    myArea.getDocument().addDocumentListener(myListener);
  

JTextField 的水平对齐可以设置为左对齐、前导对齐、居中、右对齐或尾对齐。如果字段文本所需的大小小于分配给它的大小,则右/尾对齐很有用。这是由 setHorizontalAlignmentgetHorizontalAlignment 方法确定的。默认是前导对齐。

文本字段如何使用 VK_ENTER 事件取决于文本字段是否有任何动作监听。如果是这样,则 VK_ENTER 导致监听获得 ActionEvent,并且 VK_ENTER 事件被消耗。这与 AWT 文本字段处理 VK_ENTER 事件的方式兼容。如果文本字段没有动作监听,则从 v 1.3 开始,不会使用 VK_ENTER 事件。相反,处理祖先组件的绑定,这使 JFC/Swing 的默认按钮功能能够工作。

通过扩展模型和更改提供的默认模型,可以轻松创建自定义字段。例如,以下代码段将创建一个仅包含大写字符的字段。即使从剪贴板粘贴文本或通过编程更改文本,它也能正常工作。



 public class UpperCaseField extends JTextField {
 
   public UpperCaseField(int cols) {
     super(cols);
   }
 
   protected Document createDefaultModel() {
     return new UpperCaseDocument();
   }
 
   static class UpperCaseDocument extends PlainDocument {
 
     public void insertString(int offs, String str, AttributeSet a)
       throws BadLocationException {
 
       if (str == null) {
         return;
       }
       char[] upper = str.toCharArray();
       for (int i = 0; i < upper.length; i++) {
         upper[i] = Character.toUpperCase(upper[i]);
       }
       super.insertString(offs, new String(upper), a);
     }
   }
 }

  

Warning: Swing 不是线程安全的。有关详细信息,请参阅 Swing 的线程策略

Warning: 此类的序列化对象将与未来的 Swing 版本不兼容。当前的序列化支持适用于运行相同版本 Swing 的应用程序之间的短期存储或 RMI。从 1.4 开始,对所有 JavaBeans 的长期存储的支持已添加到 java.beans 包中。请参阅 XMLEncoder

自从:
1.2
参见:
  • 字段详细信息

    • notifyAction

      public static final String  notifyAction
      发送字段内容已被接受的通知的操作名称。通常这是绑定到回车符。
      参见:
  • 构造方法详细信息

    • JTextField

      public JTextField()
      构造一个新的 TextField 。创建默认模型,初始字符串为 null ,列数设置为 0。
    • JTextField

      public JTextField(String  text)
      构造一个用指定文本初始化的新 TextField。创建默认模型,列数为 0。
      参数:
      text - 要显示的文本,或 null
    • JTextField

      public JTextField(int columns)
      构造一个具有指定列数的新空 TextField。创建默认模型并将初始字符串设置为 null
      参数:
      columns - 用于计算首选宽度的列数;如果列设置为零,则首选宽度将是组件实现的自然结果
    • JTextField

      public JTextField(String  text, int columns)
      构造一个用指定文本和列初始化的新 TextField。创建默认模型。
      参数:
      text - 要显示的文本,或 null
      columns - 用于计算首选宽度的列数;如果列设置为零,则首选宽度将是组件实现的自然结果
    • JTextField

      public JTextField(Document  doc, String  text, int columns)
      构造一个新的 JTextField,它使用给定的文本存储模型和给定的列数。这是其他构造函数通过的构造函数。如果文档是 null ,则会创建一个默认模型。
      参数:
      doc - 要使用的文本存储;如果这是 null ,将通过调用 createDefaultModel 方法提供默认值
      text - 要显示的初始字符串,或 null
      columns - 用于计算首选宽度的列数 >= 0;如果 columns 设置为零,则首选宽度将是组件实现的自然结果
      抛出:
      IllegalArgumentException - 如果 columns < 0
  • 方法详情

    • getUIClassID

      @BeanProperty (bound =false) public String  getUIClassID()
      获取 UI 的类 ID。
      重写:
      getUIClassID 在类 JComponent
      返回:
      字符串“TextFieldUI”
      参见:
    • setDocument

      @BeanProperty (expert =true, description ="the text document model") public void setDocument(Document  doc)
      将编辑器与文本文档相关联。当前注册的工厂用于为文档构建视图,在重新生效后由编辑器显示。 PropertyChange 事件(“文档”)被传播到每个监听。
      重写:
      setDocument 在类 JTextComponent
      参数:
      doc - 要显示/编辑的文档
      参见:
    • isValidateRoot

      public boolean isValidateRoot()
      来自文本字段本身的对 revalidate 的调用将通过验证文本字段来处理,除非文本字段包含在 JViewport 中,在这种情况下返回 false。
      重写:
      isValidateRoot 在类 JComponent
      返回:
      如果此文本字段的父项是 JViewPort 则返回 false,否则返回 true
      参见:
    • getHorizontalAlignment

      public int getHorizontalAlignment()
      返回文本的水平对齐方式。有效键是:
      • JTextField.LEFT
      • JTextField.CENTER
      • JTextField.RIGHT
      • JTextField.LEADING
      • JTextField.TRAILING
      返回:
      水平对齐
    • setHorizontalAlignment

      @BeanProperty (preferred =true, enumerationValues ={"JTextField.LEFT","JTextField.CENTER","JTextField.RIGHT","JTextField.LEADING","JTextField.TRAILING"}, description ="Set the field alignment to LEFT, CENTER, RIGHT, LEADING (the default) or TRAILING") public void setHorizontalAlignment(int alignment)
      设置文本的水平对齐方式。有效键是:
      • JTextField.LEFT
      • JTextField.CENTER
      • JTextField.RIGHT
      • JTextField.LEADING
      • JTextField.TRAILING
      invalidaterepaint 在设置对齐时调用,并触发 PropertyChange 事件(“horizontalAlignment”)。
      参数:
      alignment - 对齐
      抛出:
      IllegalArgumentException - 如果 alignment 不是有效密钥
    • createDefaultModel

      protected Document  createDefaultModel()
      如果未明确给出,则创建要在构造时使用的模型的默认实现。 PlainDocument 的一个实例被返回。
      返回:
      默认模型实现
    • getColumns

      public int getColumns()
      返回此 TextField 中的列数。
      返回:
      列数 >= 0
    • setColumns

      @BeanProperty (bound =false, description ="the number of columns preferred for display") public void setColumns(int columns)
      在此 TextField 中设置列数,然后使布局无效。
      参数:
      columns - 列数 >= 0
      抛出:
      IllegalArgumentException - 如果 columns 小于 0
    • getColumnWidth

      protected int getColumnWidth()
      返回列宽。对于某些字体,列的含义可以被认为是一个相当弱的概念。此方法用于定义列的宽度。默认情况下,这被定义为所用字体的字符 m 的宽度。这个方法可以重新定义为一些替代量
      返回:
      列宽 >= 1
    • getPreferredSize

      public Dimension  getPreferredSize()
      返回此 TextField 所需的首选大小 Dimensions。如果设置了非零列数,则宽度设置为列数乘以列宽。
      重写:
      getPreferredSize 在类 JComponent
      返回:
      此文本字段的尺寸
      参见:
    • setFont

      public void setFont(Font  f)
      设置当前字体。这将删除缓存的行高和列宽,以便反映新字体。 revalidate 在设置字体后被调用。
      重写:
      setFont 在类 JComponent
      参数:
      f - 新字体
      参见:
    • addActionListener

      public void addActionListener(ActionListener  l)
      添加指定的动作监听以接收来自此文本字段的动作事件。
      参数:
      l - 要添加的动作监听器
    • removeActionListener

      public void removeActionListener(ActionListener  l)
      删除指定的动作监听,以便它不再接收来自该文本字段的动作事件。
      参数:
      l - 要删除的动作监听器
    • getActionListeners

      @BeanProperty (bound =false) public ActionListener [] getActionListeners()
      返回使用 addActionListener() 添加到此 JTextField 的所有 ActionListener 的数组。
      返回:
      添加所有 ActionListener 或如果未添加任何监听器,则为空数组
      自从:
      1.4
    • fireActionPerformed

      protected void fireActionPerformed()
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是延迟创建的。监听列表按从后到前的顺序进行处理。
      参见:
    • setActionCommand

      public void setActionCommand(String  command)
      设置用于动作事件的命令字符串。
      参数:
      command - 命令字符串
    • setAction

      @BeanProperty (visualUpdate =true, description ="the Action instance connected with this ActionEvent source") public void setAction(Action  a)
      ActionEvent 源设置 Action。新的 Action 取代了之前设置的任何 Action 但不影响 ActionListeners 独立添加 addActionListener 。如果 Action 已经是 ActionEvent 源的已注册 ActionListener,则不会重新注册。

      设置 Action 会导致立即更改 摇摆组件支持Action 中描述的所有属性。随后,文本字段的属性会随着 Action 的属性更改而自动更新。

      此方法使用其他三种方法来设置和帮助跟踪 Action 的属性值。它使用 configurePropertiesFromAction 方法立即更改文本字段的属性。为了跟踪 Action 的属性值的变化,此方法注册了 createActionPropertyChangeListener 返回的 PropertyChangeListener。当 Action 中的属性更改时,默认 PropertyChangeListener 调用 actionPropertyChanged 方法。

      参数:
      a - ActionJTextFieldnull
      自从:
      1.3
      参见:
    • getAction

      public Action  getAction()
      返回当前为此 ActionEvent 源设置的 Action,如果未设置 Action,则返回 null
      返回:
      这个 ActionEvent 来源的 Action,或 null
      自从:
      1.3
      参见:
    • configurePropertiesFromAction

      protected void configurePropertiesFromAction(Action  a)
      设置此文本字段的属性以匹配指定的 Action 中的属性。有关此设置的属性的更多详细信息,请参阅 摇摆组件支持Action
      参数:
      a - 从中获取属性的 Action,或 null
      自从:
      1.3
      参见:
    • actionPropertyChanged

      protected void actionPropertyChanged(Action  action, String  propertyName)
      更新文本字段的状态以响应关联操作中的属性更改。从 createActionPropertyChangeListener 返回的 PropertyChangeListener 调用此方法。子类通常不需要调用它。支持额外 Action 属性的子类应该覆盖这个和 configurePropertiesFromAction

      有关此方法设置的属性列表,请参阅 摇摆组件支持Action 中的表格。

      参数:
      action - 与此文本字段关联的 Action
      propertyName - 更改的属性的名称
      自从:
      1.6
      参见:
    • createActionPropertyChangeListener

      protected PropertyChangeListener  createActionPropertyChangeListener(Action  a)
      创建并返回一个 PropertyChangeListener 负责监听来自指定 Action 的更改并更新相应的属性。

      警告:如果您将其子类化,则不要创建匿名内部类。如果你这样做,文本字段的生命周期将与 Action 的生命周期相关联。

      参数:
      a - 文本框的动作
      返回:
      一个 PropertyChangeListener 负责监听来自指定 Action 的变化并更新适当的属性
      自从:
      1.3
      参见:
    • getActions

      @BeanProperty (bound =false) public Action [] getActions()
      获取编辑器的命令列表。这是由编辑器本身支持的命令集合扩充的插件 UI 支持的命令列表。这些对于绑定到事件很有用,例如在键盘map中。
      重写:
      getActions 在类 JTextComponent
      返回:
      命令列表
    • postActionEvent

      public void postActionEvent()
      通过将事件分配给任何已注册的 ActionListener 对象来处理在此文本字段上发生的动作事件。这通常由在文本字段中注册的控制器调用。
    • getHorizontalVisibility

      @BeanProperty (bound =false) public BoundedRangeModel  getHorizontalVisibility()
      获取文本字段的可见性。如果字段的大小大于分配给该字段的区域,则可以调整它以更改可见区域的位置。

      字段外观实现管理 BoundedRangeModel 上的最小值、最大值和范围属性的值。

      返回:
      能见度
      参见:
    • getScrollOffset

      public int getScrollOffset()
      获取滚动偏移量,以像素为单位。
      返回:
      offset >= 0
    • setScrollOffset

      public void setScrollOffset(int scrollOffset)
      设置滚动偏移量,以像素为单位。
      参数:
      scrollOffset - 偏移量 >= 0
    • scrollRectToVisible

      public void scrollRectToVisible(Rectangle  r)
      向左或向右滚动字段。
      重写:
      scrollRectToVisible 在类 JComponent
      参数:
      r - 要滚动的区域
      参见:
    • paramString

      protected String  paramString()
      返回此 JTextField 的字符串表示形式。此方法仅用于调试目的,返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但可能不是 null
      重写:
      paramString 在类 JTextComponent
      返回:
      这个 JTextField 的字符串表示
    • getAccessibleContext

      @BeanProperty (bound =false) public AccessibleContext  getAccessibleContext()
      获取与此 JTextField 关联的 AccessibleContext。对于 JTextFieldsAccessibleContext 采用 AccessibleJTextField 的形式。如有必要,将创建一个新的 AccessibleJTextField 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      重写:
      getAccessibleContext 在类 JTextComponent
      返回:
      一个 AccessibleJTextField 作为这个 JTextFieldAccessibleContext