记录JavaFx中非常重要的细节

JavaFx中有一些疑难杂症,或许你以为你掌握了JavaFx,但是也未必知道我所说的这些问题和解决方案,如果有帮助到你的,可以加群最大最活跃的JavaFx社群:518914410 欢迎访问我的个人博客www.cmlanche.com

已经解决的细节:

  1. 鼠标单击、双击以及多击事件(大于三次基本无意义)的执行。   从图中看出,单击一次执行一次,双击,执行两次,click中走了两次,一次clickcount为1,另一次为2,多击和双击同理  
  2. ComboBox<T>这个控件中的T模板类型如果换成一个JavaBean类型的话,控件所选择的值和列表显示什么数据呢?  如果你入门了,你告诉我,会显示JavaBean对象中的toString()返回的值,是的,没错,但是加入这个JavaBean是你无法更改的,又或者说你更改它会不美观,会破坏你写代码的美感,没错,的确会这样。   然后更有经验的人会告诉我,你可以用setCellFactory来自己定义列表的值,确实列表的值变成了你想要的值,但是你同样会发现控件所选择的值还是toString()所表达的值。这怎么解决呢?   其实ComboBox中有个叫StringConverter的东西,由它完成自定义转换,示例:  
public class JavaBean{
  public String p1;
  public String p2;
}

ComboBox<JavaBean> combox = new ComboBox<>();
combox.setConverter(new StringConverter<JavaBean>(){
  @Override
  public String toString(JavaBean bean){
    return String.format("%s(%s)", bean.p1, bean.p2);
  }
  @Override
  public JavaBean fromString(String str){return null;}
});

 其实只要设置StringConverter就可以了,不用设置cellfactory,后者更多的是用来更改ui外观的  

处于未知的细节问题:

  1. 是否可以自定义系统提供的标题栏,这样更加省事