在桌面应用措施中实现Beans和数据绑定
副标题#e#
本教程的软件和文件需求
要完本钱教程,需要在计较机中安装以下软件:
NetBeans IDE 6.0。
Java Standard Development Kit (JDK) version 5.0 or 6.0
简介:NetBeans IDE 6.0 中的 Bean 绑定
在还没有宣布 bean 绑定库的时候,凡是很难将 UI 组件毗连到数据库可能使组件属性值保持同步。譬喻,要在 JTable 中显示来自尺度数据库的数据,需要手动建设实用类来处理惩罚数据库和 JTable 之间的毗连。而要使差异 bean 属性的值(譬喻描画可见 bean 的 JTextField 的值)保持同步则需要亲自编写侦听措施和事件处理惩罚措施。
bean 绑定库对所有这些操纵举办了简化和尺度化。您仅需编写几行代码来确定哪些组件的哪些属性需要保持同步,余下的事情则由 bean 绑定库认真完成。在 NetBeans IDE 中,bean 绑定特性被集成到了 GUI Builder 中,因此在确定可视设计之后,您可以立即编写应用措施的行为。
本教程概述了 IDE bean 绑定的主要方面。要相识浩瀚特性的详细应用,请阅读 构建 Java 桌面数据库应用措施教程。
对多个属性举办绑定
本质上讲,bean 绑定就是一种不需要侦听事件和处理惩罚代码就可毗连 bean 属性的要领。
为表明 bean 绑定的观念以及 IDE 对其提供的支持,我们将实现一个简朴的示例,其顶用户可以调解滑块来修改文本字段中的数字值。
示例配置如下:
在 IDE 中,选择 File > New Project。
选择 Java 种别并选择 Java Application 模板。单击 Next 按钮。
在领导的 Name 和 Location 页面,执行以下操纵:
输入 NumberSlider 作为项目名。
选中 Set As Main Project 复选框。
打消选择 Create Main Class 复选框。
单击 Finish 按钮退出领导并配置项目。
在 Projects 窗口中,右键单击 NumberSlider 项目节点并选择 New > JFrame Form。
(假如 New 菜单中的 JFrame Form 不行用,选择 Other。然后在 New File 领导中,选择 Swing GUI Forms 种别并选择 JFrame Form 模板)。< /p>
#p#副标题#e#
在领导的 Name and Location 页面中,执行以下操纵:
输入 NumberSliderFrame 作为类名。
输入 numberslider 作为包名。
单击 Finish 按钮退出领导并建设表单。
NumberSliderForm.java 将在编辑区域中以设计模式打开。
在方才显示的 Palette 的 Swing Controls 区域中,将滑块控件拖拽到设计区。
将 Palette 中的文本字段组件拖拽到设计区。
发生的表单大概雷同于下面显示的屏幕截图。可是,控件的摆放位置不会影响演示目标。
源和方针
此刻我们已经成立好了示例,可以开始建设绑定了。然而,我们首先需要确定别离将哪些组件作为绑定 源 和绑定 方针。绑定源中的属性值将作为绑定的初始值。
当在 GUI Editor 中举办绑按时,将对方针组件提倡绑定,然后在 Bind 对话框中声明绑定源。
在本例中,由于 JSlider 提供了默认值,我们就利用它作为绑定源。
留意:绑定可以是双向的(读/写),因此对方针作出的窜改会自动反应到源中。然而,初始绑定的偏向老是从源到方针。有关 Update Mode 的信息请参阅 高级绑定设置 小节。
要将滑块绑定到文本字段:
右键单击文本字段组件并选择 Bind > text 以打开 Bind 对话框。
从 Binding Source 组合框中选择 jSlider1。
从 Binding Expression 组合框中选择 value int,如下图所示。
单击 OK 按钮。
您已经将滑块的 value bean 属性绑定到文本字段的 text 值。
在设计区内,文本字段应该显示值 50。该值暗示滑块处于正中间的位置,而默认的值的范畴为 0 到 100。
此刻您可以运行应用措施并查察绑定的运作。
要运行项目:
选择 Run > Run Main Project。
在 Run Project 对话框中,单击 OK 按钮将 numberslider.NumberSliderForm 配置为主类。
应用措施将从一个独立的窗口中启动。调解所运行应用措施中的滑块并调查文本字段的值是否产生变革。
高级绑定设置
上面的示例显示了利用默认行为的简朴绑定。可是,某些时候您但愿或需要设置差异的绑定。假如是这样,则可以利用 Binding 对话框的 Advanced 选项卡。
对话框的 Advanced 选项卡包括以下字段:
Name。使您可以或许为绑定建设一个名字,从而可以越发机动地打点绑定。绑定的名字被添加到绑定结构函数中,而且可以被绑定的 getName() 要领引用。
Update Mode。指定实现属性同步的要领。大概的值包罗:
始终执行同步(读/写)。无论何时只要对源或方针作出变动,与之相应的另一方也将被更新。
#p#分页标题#e#
只从源举办读取(只包罗读)。只有首次设定源值时对方针举办更新。当对源作出修改时,将对方针举办更新。而对方针作出的修改不会更新到源中。
只对源举办一次读取(只读取一次)。 只有第一次绑定方针和源时对方针举办更新。
Update Source When (只对 JTextField 和 JTextArea 组件的 text 属性起浸染)。使您可以或许选择与属性举办同步的频率。
Ignore Adjusting(只对 JSlider 的 value 属性、JTable 和 JList 的 selectedElement 属性、JTable 和 JList 的 selectedElements 属性起浸染)。假如选中该复选框,在用户完成变动之前,对某个属性的所有变动不会通报到与之对应的属性中。譬喻,当应用措施的用户拖动滑块时,与滑块的 value 属性相绑定的属性的值只有在用户释放鼠标后才会更新。
Converter。假如绑定包括差异数据范例的属性,则可以指定代码在范例之间转换值。beans 绑定库可以处理惩罚许多常见的转换,可是对付其他的属性范例组合,您需要提供本身的转换措施。这类转换措施需要扩展 org.jdesktop.beansbinding.Converter 类。
可以利用作为 bean 添加到表单的任何转换措施填充 Converter 下拉列表。您还可以直接添加转换代码,要领为单击 ellipsis (…) 按钮,然后从 Select Converter Property Using 下拉列表中选择 Custom Code。
Validator。使您可以或许指示代码验证方针属性值的变动,然后将该变动通报回源属性中。这种验证措施需要扩展 org.jdesktop.beansbinding.Validator 类。
可以利用作为 bean 添加到表单的任何验证措施填充 Validator 下拉列表。您还可以直接添加验证代码,要领为单击 ellipsis (…) 按钮,然后从 Select Validator Property Using 下拉列表中选择 Custom Code。
Null Source Value。在实验绑按时,假如源属性具有一个 null 值,则该字段可以使您指定一个差异的值利用。该字段对应于 org.jdesktop.beansbinding.Binding 类的 setSourceNullValue() 要领。
Unreadable Source Value。在实验绑按时,假如无法理会绑定表达式,该字段可以使您可以或许指定一个差异的值来利用。该字段对应于 org.jdesktop.beansbinding.Binding 类的 setSourceUnreadableValue() 要领。
为了更好地领略以上提到的类和要领,您可以直接通过 IDE 要领 beans 绑定 Javadoc 文档。选择 Help > Javadoc References > Beans Binding。在打开的欣赏器窗口中,单击 org.jdesktop.beansbinding 链接可以会见这些类的文档。
对组件绑定命据
建设完新 Java 表单并向个中添加了组件后,您可以生成代码来为这些组件绑定命据。利用 IDE 可以轻松地将数据绑定到 Swing JTable、JList 和 JComboBox 组件。< /p>
在将数据库中的数据绑定到组件之前,您需要执行以下操纵:
将 IDE 毗连到一个数据库。
向 GUI Builder 中的表单添加组件。
建设需要举办绑定的代表数据库表的类。下面先容了将数据绑定到组件的实体类的建设步调。
建设实体类
要建设实体类并利用它暗示绑定到 JTable 的数据库,请执行以下操纵:
在 Projects 窗口中,右键单击项目并选择 New > Other,选择 Persistence 种别,然后从 Database 模板选择 Entity Classes。< /li>
在领导的 Database Tables 页面中选择 database connection。
填充 Available Tables 列后,选择但愿在应用措施中利用的表并单击 Add 将它们移动到 Selected Tables 列中,单击 Next 按钮。
在领导的 Entity Classes 页面中,确保 Generate Named Query Annotations for Persistent Fields 对话框被选中。
按照需求对所生成的类的名称和位置举办自界说。
单击 Create Persistence Unit 按钮。
在 Create Persistence Unit 对话框中,确举荐办了以下选择:
所选的 Persistence Library 为 TopLink。
所选的 Table Generation Strategy 为 “None”。
单击 Finish 按钮。
您应该可以或许在 Projects 窗口中看到实体类节点。
将组件绑定到暗示数据的 Bean
要将数据绑定到 JTable 组件:
右键单击 GUI Builder 中的组件并选择 Bind > 元素。
单击 Import Data to Form 按钮。从 Import Data to Form 对话框中选择但愿对其绑定组件的数据库表。单击 OK 按钮。
在 Binding Source 复选框中,选择暗示实体类的功效列表的项。譬喻,假如挪用了实体类 Customer.java,那么将生成 customerList 列表工具。
保存 Binding Expression 的值为 null。
假如但愿将一些数据库列显示在 JTable 中,则从 Selected 列表中选择这些列,然后将它们移动到 Available 列表。
选择 Advanced 选项卡进一步设置绑定。譬喻,您可以指定一个验证措施或是转换措施,可能假如绑定源为 null 或不行读时指定行为。
单击 OK 按钮。
要将数据绑定到 JList 组件:
右键单击 GUI Builder 中的组件并选择 Bind > 元素。
单击 Import Data to Form。从 Import Data to Form 对话框中选择但愿对其绑定组件的数据库表。单击 OK 按钮。
从 Binding Source 复选框中选择暗示实体类功效列表的项。譬喻,假如挪用了实体类 Customer.java,那么将生成 customerList 种别工具。
保存 Binding Expression 的值为 null 稳定。
在 Display Expression 下拉列表中,选择暗示数据库列的属性,这些数据库列包括但愿显示在列表的值。
选择 Advanced 选项卡进一步设置绑定。
单击 OK。
#p#分页标题#e#
留意:您还可以利用 New Java Desktop Application 领导快速建设具有 CRUD 特性(建设、更新和删除)的成果完整的应用措施。然而,最好提前建设所有实体类,以确保所生成的类涵盖了实体间的所有干系。
非凡绑定属性
假如需要,可以利用 bean 绑定库为组件中缺失的一些 Swing 组件提供的工钱建设的非凡属性。这些属性暗示的内容(如选中的表行)有助于绑定属性。
下面的列表展示了 bean 绑定库添加的一些工钱建设的属性:
组件 | 属性 | 说明 |
AbstractButton | selected | 选中的按钮状态。 |
JComboBox | selectedItem | 选中的 JComboBox 项。 |
JSlider | value | JSlider 的值;通知所有变动。 |
value_IGNORE_ADJUSTING | 与 “value” 沟通,可是在滑块调解自身值的时候不会通知变动。 | |
JList | selectedElement | 选中的 JList 元素;通知所有变动。假如 JListBinding 将 JList 作为绑定方针,所选的元素被陈诉为绑定源列表中的一个元素。不然,选中的元素被陈诉为列表模子中的工具。假如没有选择元素,属性值将为 null。 |
selectedElements | 包括选中的 JList 元素的列表;通知所有变动。假如 JListBinding 将 JList 作为绑定方针,所选的元素被陈诉为绑定源列表中的一个元素。不然,选中的元素被陈诉为列表模子中的工具。假如没有选择元素,属性值将为一个空列表。 | |
selectedElement_IGNORE_ADJUSTING | 与 “selectedElement” 沟通,可是在更新列表选择时不会通知变动。 | |
selectedElements_IGNORE_ADJUSTING | 与 “selectedElements” 沟通,可是在更新列表选择是不会通知变动。 | |
JTable | selectedElement | 选中的 JTable 元素;通知所有变动。假如 JTableBinding 将 JTable 作为绑定方针,所选的元素被陈诉为绑定源列表中的一个元素。不然,选中的元素被陈诉为一个映射,个中的键由字符串 “column” 加列索引构成,个中的值为该列的模子值。譬喻: {column0=column0value, column1=column1value, …} 假如没有选择元素,属性值将为 null。 |
selectedElements | 包括选中的 JTable 元素的列表;通知所有变动。假如 JTableBinding 将 JTable 作为绑定方针,所选的元素被陈诉为绑定源列表中的一个元素。不然,选中的元素被陈诉为一个映射,个中的键由字符串 “column” 加列索引构成,个中的值为该列的模子值。譬喻: {column0=column0value, column1=column1value, …}假如没有选择元素,属性值将为一个空列表。 | |
selectedElement_IGNORE_ADJUSTING | 与 “selectedElement” 沟通,可是在更新表选择期间不会通知变动。 | |
selectedElements_IGNORE_ADJUSTING | 与 “selectedElements” 沟通,可是在更新表选择期间不会通知变动。 | |
JTextComponent(包罗其子类 JTextField、JTextArea 和 JEditorPane) | text | JTextComponent 的 text 属性;通知所有变动(包罗输入)。 |
text_ON_FOCUS_LOST | JTextComponent 的 text 属性;只有当组件丢失核心时通知变动。 | |
text_ON_ACTION_OR_FOCUS_LOST | JTextComponent 的 text 属性;只有当组件通知 actionPerformed 或组件丢失核心时通知变动。 |
向我们反馈
竣事语
#p#分页标题#e#
有关更全面的 IDE GUI Builder 利用信息,请参阅 GUI Building in NetBeans IDE 5.5。有关 Beans Binding 的更多信息,请参阅 java.net 上的 Beans Binding 项目页面。