赞
踩
不管是安卓,ios,web端等等,几乎都需要使用的列表选择。这也是最基本的一些选择器。一些复杂的,自定义的UI选择器其实也是根据这些选择器的本身,重写方法,重新定义它原本规则来显示和传值的。
那么我们在开发javaFx的时候,这些选择器又该如何使用呢。
JavaFx也有自己的Api官网的, 上面讲解的比较模糊一些。我这里呢,也是写了很多基础的方法来实现。
比如我们需要是ChoiceBox这个选择器的使用,它跟我们之前Android,IOS,Web是有很大的不同的。为什么呢?
拿Android的来说吧,他只需要我们传一个list对象,然后list当中添加实体类就行了,但是javaFx的实体类是不同于这些的。
我这里总结了一些javaFx用得到的封装类
- Long > SimpleLongProperty
- Integer > SimpleIntegerProperty
- String > SimpleStringProperty
- Boolean > SimpleBooleanProperty
- Doubile > SimpleDoubleProperty
- Float > SimpleFloatProperty
以上是六种基本数据类型的封装方法,当然还有其他的封装类型,比如List,Map,Set等,这里我就不多说了,如果需要的话,大家评论区留言,我会单独写一份关于这些封装类型的用法供大家参考
例如我们需要展示一个列表,供大家选择[加,减,乘,除],
- /**
- 我们需要先封装一个条件类,代码如下
- */
-
- public class MathConvert {
-
- private SimpleStringProperty name = new SimpleStringProperty();
-
- private SimpleIntegerProperty value = new SimpleIntegerProperty();
-
- public MathConvert(String name,int value){
- this.name.set(name);
- this.value.set(value);
- }
-
- public String getName() {
- return name.get();
- }
-
- public SimpleStringProperty nameProperty() {
- return name;
- }
-
- public void setName(String name) {
- this.name.set(name);
- }
-
- public int getValue() {
- return value.get();
- }
-
- public SimpleIntegerProperty valueProperty() {
- return value;
- }
-
- public void setValue(int value) {
- this.value.set(value);
- }
在我们需要初始化ChoiceBox的位置,初始化一个List,当然啦,JavaFx的的Ui展示的list可不是java基础类的List,我们需要这样写
private ObservableList<MathConvert> mathConvertList = FXCollections.observableArrayList();
我们对应的ChoiceBox也是需要加上泛型的,那这个泛型就是我们之前定义的MathConvert类了。
private ChoiceBox<MathConvert> mathChoice;
那我们给ChoiceBox添加值时,按照如下添加就可以了
- //需要new几个对象,加减乘除
- MathConvert add=new MathConvert("加",1);
-
- MathConvert exce=new MathConvert("减",2);
-
- MathConvert plus=new MathConvert("乘",3);
-
- MathConvert dive=new MathConvert("除",4);
- mathConvertList.add(add);
- mathConvertList.add(exce);
- mathConvertList.add(plus);
- mathConvertList.add(dive);
- mathChoice.setItems(mathConvertList);
以上就可以给choicebox初始化添加一个列表值,供前端用户选择了。
但是呢,你重启之后会发现,列表展示的居然是一大串的内存地址,显然不是我们需要的。
这个时候呢。其实啊,我们还得在初始化值之前就先将ChoiceBox进行一次格式化,需要将显示的值给到ui端显示,只有这样才是我们需要的。
- mathChoice.setConverter(new StringConverter<MathConvert>() {
- @Override
- public String toString(MathConvert object) {
- return object.getName();
- }
-
- @Override
- public MathConvert fromString(String string) {
- //如果有格式化的话,需要重写此方法,按照既定规则显示
- //我这里直接显示名字就可以的了,所以什么都不用填
- System.out.println(string);
- return null;
- }
- });
按照以上步骤,重新启动一下程序看看结果:
这就是我们展示的结果啦。
接下来,我们需要选中某个选项,然后需要拿到选中的值。这个时候该怎么做呢?
这都是有办法可以做到的
使用这个ChoiceBox选择器设置一下单选model,重新启动之后,你会发现这个getModelItem的回调的index值居然是-1??
所以一不小心就是会报内存溢出的问题,
那么最简单的方式就是,把这个设置单选监听放到setItems后面。
这样的话,就不会存在有内存溢出的风险了。当然拉,还有那种通过网络请求的,那这种的话,你就得在getModelItem方法做个判断了,list不存在值时,就返回空,等待赋值加入之后,就有值了。
以上就是javaFx的ChoiceBox选择的使用方法,有其他想法的朋友可以留言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。