zoukankan      html  css  js  c++  java
  • 记录JavaFx中非常重要的细节,入门了也未必知道


    title: 记录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. 是否可以自定义系统提供的标题栏,这样更加省事
  • 相关阅读:
    C#中标准Dispose模式的实现
    TcpListener 示例
    TCP/IP详解学习笔记
    TCP跟UDP乱侃
    Opencv 2.4.10 +VS2010 项目配置记录
    字符串作业及默写
    Flask 中的 Render Redirect HttpResponse
    运算符和编码作业及默写
    初识 Python 作业及默写
    初识 Python
  • 原文地址:https://www.cnblogs.com/cmgrass/p/6828109.html
Copyright © 2011-2022 走看看