最近在做一个登录界面,想把它做得好看些~ 于是想到了用DataBinding。
以下是在portField中应用databinding的一个简图
当输入的端口号不对时 statusField 提示有错:
这个功能是这样实现的:
step 1 : 先把外壳“画好“。
step 2 : 在portField上右键 Binding-->text,
step 3: 在打开了Binding portField.text 之后。
这里有一个之前一直让我很无奈的问题出来了: 在BindingSource中,你选不了自己定义的变量,只能是你在“画画”的时候,matisse自己画上去的那些东西,比如field呀,label呀。。。大家在日常使用时很少直接用到Swing的component之间直接绑定。。。。
但在看了Netbeans 自己的那些DataBinding的例子(ClientEditor)之后,我才发现这其中还真是有玄机!!!
那就是在下拉表中最后一个:Form
这个Form是啥~?? 就是这个容器它自己!
Netbeans中,就是用这个Form指代窗口它自己,来给自己定义的变量一个入口:
以下上图说明:
对应的代码如下:
现在已经把两个东西绑定起来了,但是一个是String,一个是int ,需要一个Converter.
另外port还需要一个Validator来验证输入合法。
Step 4: 为portField添加Converter
当然,你首先需要选一个PortConverter类,它要继承Converter接口。
你只要实现S---->T 和一个T----->S 的方法就行了。
代码如下:
当然,你还需要在Frame中加入一个Converter对象
然后在Design界面下把这个converter选中:
在portFeidl中右键,Binding --> text 在上面选Advance。
ok. 把Converter填上了。
Step 5: 填加 Validator
其实我也不太懂这个Validator中Result的作用形式。只是感觉特别好用。
我也没怎么深入看这个东西,只是把Netbeans中ClientEditor它自己的这个Validator稍微改了改就成了PortValidator
还是看代码吧。
然后还是像添加Converter一样,先造一个对象,再在Binding里面选中。
step 6 : 把Validator返回的Result用到Statul Label上。
这个地方Netbeans的这个Sample非常非常好!! 它提供了一个自己写的Listener,,它接受一个JLabel,然后当验证成功了或者失败了,它直接输出到JLabel上。 是居家旅行,编写代码,提示消息的必备良药~~~~:)嘿嘿。
不说了,上代码!!!!:
最后,把这个listener加到BindingGroup上
如果自己没有试出来的话,那就把Netbeans的那个ClientEditor样例拿出来看看~ 。保会~~~~