Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使JButton激活compareTo功能?_Java_Jbutton_Listener_Compareto_Windowbuilder - Fatal编程技术网

Java 如何使JButton激活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

这有点尴尬。我有一个compareTo函数,我打算在JButton上使用它,所以当用户按下它时,他们可以看到哪个是排名最高的对象。我已经为JButton创建了一个监听器类,但是我不知道如何让监听器使用compareTo函数,因为它需要两个参数

这是我的compareTo功能:

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

}