当前位置:   article > 正文

JavaFx: ChoiceBox,选择器的使用方式_choicebox javafx

choicebox javafx

          不管是安卓,ios,web端等等,几乎都需要使用的列表选择。这也是最基本的一些选择器。一些复杂的,自定义的UI选择器其实也是根据这些选择器的本身,重写方法,重新定义它原本规则来显示和传值的。

        那么我们在开发javaFx的时候,这些选择器又该如何使用呢。

        JavaFx也有自己的Api官网的, 上面讲解的比较模糊一些。我这里呢,也是写了很多基础的方法来实现。

        比如我们需要是ChoiceBox这个选择器的使用,它跟我们之前Android,IOS,Web是有很大的不同的。为什么呢?

        拿Android的来说吧,他只需要我们传一个list对象,然后list当中添加实体类就行了,但是javaFx的实体类是不同于这些的。

        我这里总结了一些javaFx用得到的封装类

  1. Long > SimpleLongProperty
  2. Integer > SimpleIntegerProperty
  3. String > SimpleStringProperty
  4. Boolean > SimpleBooleanProperty
  5. Doubile > SimpleDoubleProperty
  6. Float > SimpleFloatProperty

以上是六种基本数据类型的封装方法,当然还有其他的封装类型,比如List,Map,Set等,这里我就不多说了,如果需要的话,大家评论区留言,我会单独写一份关于这些封装类型的用法供大家参考

例如我们需要展示一个列表,供大家选择[加,减,乘,除],

  1. /**
  2. 我们需要先封装一个条件类,代码如下
  3. */
  4. public class MathConvert {
  5. private SimpleStringProperty name = new SimpleStringProperty();
  6. private SimpleIntegerProperty value = new SimpleIntegerProperty();
  7. public MathConvert(String name,int value){
  8. this.name.set(name);
  9. this.value.set(value);
  10. }
  11. public String getName() {
  12. return name.get();
  13. }
  14. public SimpleStringProperty nameProperty() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name.set(name);
  19. }
  20. public int getValue() {
  21. return value.get();
  22. }
  23. public SimpleIntegerProperty valueProperty() {
  24. return value;
  25. }
  26. public void setValue(int value) {
  27. this.value.set(value);
  28. }

     在我们需要初始化ChoiceBox的位置,初始化一个List,当然啦,JavaFx的的Ui展示的list可不是java基础类的List,我们需要这样写

private ObservableList<MathConvert> mathConvertList = FXCollections.observableArrayList();

   我们对应的ChoiceBox也是需要加上泛型的,那这个泛型就是我们之前定义的MathConvert类了。

 private ChoiceBox<MathConvert> mathChoice;

那我们给ChoiceBox添加值时,按照如下添加就可以了

  1. //需要new几个对象,加减乘除
  2. MathConvert add=new MathConvert("加",1);
  3. MathConvert exce=new MathConvert("减",2);
  4. MathConvert plus=new MathConvert("乘",3);
  5. MathConvert dive=new MathConvert("除",4);
  6. mathConvertList.add(add);
  7. mathConvertList.add(exce);
  8. mathConvertList.add(plus);
  9. mathConvertList.add(dive);
  10. mathChoice.setItems(mathConvertList);

以上就可以给choicebox初始化添加一个列表值,供前端用户选择了。

但是呢,你重启之后会发现,列表展示的居然是一大串的内存地址,显然不是我们需要的。

这个时候呢。其实啊,我们还得在初始化值之前就先将ChoiceBox进行一次格式化,需要将显示的值给到ui端显示,只有这样才是我们需要的。

  1. mathChoice.setConverter(new StringConverter<MathConvert>() {
  2. @Override
  3. public String toString(MathConvert object) {
  4. return object.getName();
  5. }
  6. @Override
  7. public MathConvert fromString(String string) {
  8. //如果有格式化的话,需要重写此方法,按照既定规则显示
  9. //我这里直接显示名字就可以的了,所以什么都不用填
  10. System.out.println(string);
  11. return null;
  12. }
  13. });

        按照以上步骤,重新启动一下程序看看结果:

         这就是我们展示的结果啦。

        接下来,我们需要选中某个选项,然后需要拿到选中的值。这个时候该怎么做呢?

        这都是有办法可以做到的

        

         使用这个ChoiceBox选择器设置一下单选model,重新启动之后,你会发现这个getModelItem的回调的index值居然是-1??

        所以一不小心就是会报内存溢出的问题,

 那么最简单的方式就是,把这个设置单选监听放到setItems后面。

 这样的话,就不会存在有内存溢出的风险了。当然拉,还有那种通过网络请求的,那这种的话,你就得在getModelItem方法做个判断了,list不存在值时,就返回空,等待赋值加入之后,就有值了。

以上就是javaFx的ChoiceBox选择的使用方法,有其他想法的朋友可以留言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/107183
推荐阅读
相关标签
  

闽ICP备14008679号