每个组件都有三要素:
- 内容,例如,按钮的状态(是否按下)或者文本框中的文本
- 外观显示(颜色、尺寸等)
- 行为(对事件的反应)
模型——视图——控制器(MVC)模式实现三个独立的类:
- 模型——存储内容
- 视图——显示内容
- 控制器——处理用户输入
模型——视图——控制器模式的一点优点是一个模型可以有多个视图,其中每个视图可以显示完整内容的不同部分或不同方面。
使用setColumns方法改变了一个文本框的大小以后,以需要调用包容该文本框的容器的validate方法。
textField.setColumns(10);
panel.validate();
validate()方法会重新计算容器内所有组件的大小,并且对它们重新布局。使用完validate()方法以后,布局管理器会重新绘制容器,然后就可以看到改变尺寸后的文本框。
通常,不可能通过过滤器避免所有的无效字符串。
过滤器的另外一个用途就是把字符串中的所有字符变成大写。这样的过滤器很容易编写,在过滤器的insertString和replace方法中,把要被插入的字符串转换为大写的,然后调用超类方法。
你可以给任何JComponent附加检验器。如果组件失去焦点,那么就询问检验器。如果检验器报告说组件的内容无效,该组件立即重新获得焦点,用户在提供其他输入前强迫修改内容。
在Swing中,组件增加滚动条的通用机制是:把组件添加进一个滚动窗格中。
标签是容纳文本的组件。这种组件没有修饰(例如,没有边界),它们也不响应用户输入,你可以使用一个标签来标识组件。给组件设置标签的方法如下:
- 使用正确的文本构造一个JLabel组件。
- 把该标签组件放置到同需要标识的组件足够近的地方,这样用户能看到该标签标识了哪个组件。
从J2SE1.3开始,按钮、标签以及菜单项中不仅可以无格式的文本,还可以使用HTML文本。注意,第一个使用HTML标签的组件需要延迟一段时间才能显示出来,这是因为必须加载相当复杂的HTML翻译代码。