繁体   English   中英

将 javafx、jfoenix、JAVAFX 和 Treetableview 与 mysql 一起使用时,编译时出现无效类型错误

[英]Invalid type error at compilation when using javafx, jfoenix, JAVAFX, & Treetableview with mysql

我在使用 treetableview 和 jfoenix 时遇到了问题,我注意到在我的控制器中,它不接受Tournoi作为类型private JFXTreeTableView<Tournoi> Ttab;

我正在尝试从数据库中检索数据并将数据放入树表视图中,但出现编译错误。 这是我用来访问数据库的类:

public class Tournoi {
private int id_tournoi;
private String nom;
private Date strat_date;
private Date end_date ;
private int reward1 ;
private int reward2;
private int reward3;
private int prix_par_joueur;
private int nbr_joueur;
private int etat;
private int id_compte;

public Tournoi(int id_tournoi, String nom, Date strat_date, Date end_date, int reward1, int reward2, int reward3, int prix_par_joueur, int nbr_joueur, int etat, int id_compte) {
    this.id_tournoi = id_tournoi;
    this.nom = nom;
    this.strat_date = strat_date;
    this.end_date = end_date;
    this.reward1 = reward1;
    this.reward2 = reward2;
    this.reward3 = reward3;
    this.prix_par_joueur = prix_par_joueur;
    this.nbr_joueur = nbr_joueur;
    this.etat = etat;
    this.id_compte = id_compte;
}




    public void addTournoi(Tournoi t) {
String req = "INSERT INTO `tournoi` ( `nom`, `start_date`, `end_date`, `reward1`, `reward2`, `reward3`, `prix_par_joueur`, `nbr_joueur`, `etat`, `id_compte`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
        try {
            ps = connection.prepareStatement(req);

            ps.setString(1, t.getNom());
            ps.setDate(2, (Date) t.getStrat_date());
            ps.setDate(3, (Date) t.getEnd_date());
            ps.setInt(4, t.getReward1());
            ps.setInt(5, t.getReward2());
            ps.setInt(6, t.getReward3());
            ps.setInt(7, t.getPrix_par_joueur());
            ps.setInt(8, t.getNbr_joueur());
            ps.setInt(9, t.getEtat());
            ps.setInt(10, t.getId_compte());

            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

问题的根源是什么?

  1. 我在您的项目中的任何地方都没有看到jfoenix.jar文件。 你需要包括它,否则你不会走得太远。 以下是将 JAR 文件导入 IntelliJ IDEA 的方法 如果您使用不同的 IDE,则需要查找如何使用该 IDE 导入 JAR。
  2. 它缺少导入import edu.esprit.gamehub.models.Tournoi; TournamentController类中。
  3. 导入后,我将此属性添加到TournamentController

    @FXML

    private com.jfoenix.controls.JFXTreeTableView<Tournoi> treeView;

然后它给了我错误: Error:(33, 51) java: type argument edu.esprit.gamehub.models.Tournoi is not within bounds of type-variable S

  1. 这使我认识到问题涉及您使用有界泛型类型的方式。

这是 JFXTreeTableView 类的顶部:

public class JFXTreeTableView<S extends RecursiveTreeObject<S>> extends TreeTableView<S> {
    private TreeItem<S> originalRoot;
    private boolean itemWasSelected = false;
    private ObservableList<TreeTableColumn<S, ?>> groupOrder = FXCollections.observableArrayList();
    private Semaphore groupingSemaphore = new Semaphore(1);
    private Timer t;
    private ObjectProperty<Predicate<TreeItem<S>>> predicate;
    private IntegerProperty currentItemsCount;
    private Map<Object, Map<Object, ?>> groups;

    public JFXTreeTableView() {
        this.predicate = new SimpleObjectProperty(JFXTreeTableView$$Lambda$1.lambdaFactory$());
        this.currentItemsCount = new SimpleIntegerProperty(0);
        this.init();
    }

    public JFXTreeTableView(TreeItem<S> root, ObservableList<S> items) {
        super(root);
        this.predicate = new SimpleObjectProperty(JFXTreeTableView$$Lambda$2.lambdaFactory$());
        this.currentItemsCount = new SimpleIntegerProperty(0);
        this.originalRoot = root;
        this.init();
    }

一些解决泛型类型使用问题的示例文章是:

问题是您使用的是有界类型参数,它有自己的要求。 您的 Tournoi 课程不符合这些要求。 要了解如何满足这些要求,请阅读:

这是你的线索: JFXTreeTableView<S extends RecursiveTreeObject<S>> extends TreeTableView<S>

你需要你的 Tournoi 类继承什么来满足 JFXTreeTableView 泛型类的要求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM