You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX中getSelectionModel()类型转换问题:获取ListView选中项的id_lekarza

解决JavaFX ListView选中项类型转换错误问题

嘿,咱们来搞定你碰到这个Object cannot be converted to Lekarz的错误!其实问题根源很明确,咱们一步步来修复:

核心问题

你的ListView没指定泛型类型,默认情况下它的getSelectedItem()返回的是Object类型,编译器自然没法直接把它转成你的Lekarz对象。这是最关键的点!

分步修复方案

  1. 给ListView加上泛型约束

    • 如果你是用FXML写的界面,在FXML里给ListView指定类型:
      <ListView fx:id="viewlekarz" fx:type="你的包路径.Lekarz"/>
      
      记得把你的包路径换成Lekarz类实际所在的包,比如com.example.medicalapp.Lekarz。
    • 如果是纯Java代码创建ListView,直接声明泛型:
      ListView<Lekarz> viewlekarz = new ListView<>();
      
  2. 修修你的Lekarz类
    你给的Lekarz类有几个小坑,不填的话就算解决了类型问题,拿id也会出问题:

    • 首先得把成员变量声明出来啊!比如:
      class Lekarz {
          private int id_lekarza; // 假设id是int,你要是用String就改类型
          private String imie;
          private String nazwisko;
          private String pesel;
      
          // 原来的构造函数id赋值错了!改成这样(如果需要手动传id的话)
          public Lekarz(int id_lekarza, String imie, String nazwisko, String pesel) {
              this.id_lekarza = id_lekarza;
              this.imie = imie;
              this.nazwisko = nazwisko;
              this.pesel = pesel;
          }
      
          public Lekarz(){};
      
          // 必须要有这个getter!不然你拿不到id_lekarza
          public int getId_lekarza() {
              return id_lekarza;
          }
      
          // 其他属性的getter按需加就行,Hibernate映射的时候可能也需要
          public String getImie() { return imie; }
          public String getNazwisko() { return nazwisko; }
          public String getPesel() { return pesel; }
      }
      

    另外你用Hibernate的话,记得给id_lekarza加注解,比如@Id和@GeneratedValue,让Hibernate能正确生成和管理这个主键id。

  3. 简化Controller里的事件代码
    泛型加上之后,getSelectedItem()直接返回Lekarz,不用强转,还能删掉多余的对象初始化:

    dellekarz.setOnAction((ActionEvent event)->{
        Lekarz selectedLekarz = viewlekarz.getSelectionModel().getSelectedItem();
        if(selectedLekarz != null){
            int id = selectedLekarz.getId_lekarza();
            // 这里就可以用这个id做你想做的事啦,比如调用Hibernate删除操作
        }
    });
    

这样调整完,你的代码应该就能正常运行,不会再出类型转换的错误了!

内容的提问来源于stack exchange,提问作者conter34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:53:40