Java 如何使JButton激活compareTo功能?
这有点尴尬。我有一个compareTo函数,我打算在JButton上使用它,所以当用户按下它时,他们可以看到哪个是排名最高的对象。我已经为JButton创建了一个监听器类,但是我不知道如何让监听器使用compareTo函数,因为它需要两个参数 这是我的compareTo功能:Java 如何使JButton激活compareTo功能?,java,jbutton,listener,compareto,windowbuilder,Java,Jbutton,Listener,Compareto,Windowbuilder,这有点尴尬。我有一个compareTo函数,我打算在JButton上使用它,所以当用户按下它时,他们可以看到哪个是排名最高的对象。我已经为JButton创建了一个监听器类,但是我不知道如何让监听器使用compareTo函数,因为它需要两个参数 这是我的compareTo功能: public int compareTo(Film film1, Film film2) { if (film1.getFinalScore() < film2.getFinalScore()) return
public int compareTo(Film film1, Film film2) {
if (film1.getFinalScore() < film2.getFinalScore()) return -1;
if (film1.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
自动更正建议将参数设置为null以使其工作,但显然它从来没有自动更正建议的那么简单
那么,如何让侦听器使用我的所有对象从最高到最低列出它们来执行compareTo函数呢
提前谢谢 由于您需要同时比较两部电影,您可以在
电影类
中执行Comparable
,然后在类中执行compareTo
方法
之后,将您的影片保存在任何收藏中
作为ArrayList
然后只需调用Collections.max(films)
即可获得列表中的max film对象
以下是一节电影课的演示:
public class Film implements Comparable<Film>{
int finalScore ;
public Film(int finalScore){
this.finalScore = finalScore;
}
public int getFinalScore(){
return this.finalScore;
}
@Override
public int compareTo(Film film2) {
if (this.getFinalScore() < film2.getFinalScore()) return -1;
if (this.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
}
由于您需要同时比较两部影片,您可以在
Film类中通过实现Comparable
然后在类中实现compareTo
方法来进行比较
之后,将您的影片保存在任何收藏中
作为ArrayList
然后只需调用Collections.max(films)
即可获得列表中的max film对象
以下是一节电影课的演示:
public class Film implements Comparable<Film>{
int finalScore ;
public Film(int finalScore){
this.finalScore = finalScore;
}
public int getFinalScore(){
return this.finalScore;
}
@Override
public int compareTo(Film film2) {
if (this.getFinalScore() < film2.getFinalScore()) return -1;
if (this.getFinalScore() > film2.getFinalScore()) return 1;
return 0;
}
}
您将电影列表存储在哪里?我将它们存储在一个数据库类中。您需要从数据库类中获取所有数据,并使用比较器在其中进行循环,也就是类似于此的东西?编辑:对不起,我想把代码放进去。但是类似于for(inti=0;ipublic static void main(String[] args) {
ArrayList<Film> films = new ArrayList<>();
films.add(new Film(100));
films.add(new Film(400));
films.add(new Film(200));
films.add(new Film(300));
System.out.println(Collections.max(films).getFinalScore());//prints 400
}
@Override
public void actionPerformed(ActionEvent e) {
Film maxFilm = Collections.max(films);
//then use maxFilm object to do anything you need
}