所有文本构件都可以绘制和编辑存储在实现了Document接口的类的模型对象中的数据。JTextField和JTextArea构件使用的是
PlainDocument,该构件只储存普通文本的行序列,而不进行任何格式化。JEditorPane可以展示和编辑各种格式的样式文本,特别
是HTML,StyleDocument接口描述了对样式、字体和颜色的额外需求,而HTMLDocument类实现了这个接口。
文本构件中的修改跟踪
应该让文档来通知我们数据发生变化,方法是在文档上安装文档监听器DocumentListener。
格式化的输入框
JFormattedTextField类,当格式化文本框失去焦点时,格式器会检查用户输入的文本字符串。失去焦点的默认行为称为提交或回复。
过滤器:防止用户键入非法字符。过滤器可以拦截插入命令,并修改字符串或放弃插入操作。通过过滤机制避免所有无效字符串是不可
能的。
校验器:在任意JComponent上附着,可以就无效输入对用户发出警告。必须扩展InputVerifier类并定义verify方法。如果该构件失
去焦点,那么校验器就会被查询。如果校验器报告该构件无效,那么该构件就会立即重新获得焦点,用户就被强制要求在进行其他输入之前先
订正刚输入的内容。
标准格式器:NumberFormat类、DateFormat类、DefaultFormatter类、MaskFormatter类。
定制格式器:需要扩展DefaultFormatter类,并覆盖String valueToString(Object value)、
Object stringToValue(String text)。
JSpinner构件
JSpinner是包含一个文本框以及两个在文本框旁边的小按钮的构件。当点击按钮时,文本框的值就会递增或递减。微调器中的值可以是
数字、日期、列表中的值,或是更为普遍的情况,即前驱和后继可以确定的任何值序列。可以用微调器迭代任何值集合,只需将一个
SpinnerListModel传递给JSpinner构造器即可。通过定义自已的微调器模型,可以在微调器中显示任意的序列,需要扩展
AbstractSpinnerModel类并定义Object getValue();void setValue(Object value);Object getNextValue();
Object getPreviousVaule().