【问题标题】:How can I make a JButton activate a compareTo function?如何让 JButton 激活 compareTo 函数?
【发布时间】:2016-06-21 23:02:10
【问题描述】:

这有点尴尬。我有一个打算在 JButton 上使用的 compareTo 函数,因此当用户按下它时,他们可以看到哪个是排名最高的对象。我已经有一个 JButton 的 Listener 类,但我不知道如何让 Listener 使用 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;

}

这是 Listener 类中的 actionPerformed 函数:

@Override
public void actionPerformed(ActionEvent e) {
    this.cm.compareTo(null, null);

}

自动更正建议将参数设置为 null 以使其工作,但显然它从来没有自动更正建议的那么简单。

那么,如何让 Listener 使用我的所有对象执行 compareTo 函数,从高到低列出它们?

提前致谢!

【问题讨论】:

  • 电影列表存储在哪里?
  • 我将它们存储在数据库类中。
  • 您需要从数据库类中获取所有数据并使用 compareTo 循环遍历它
  • 有类似的东西吗?编辑:抱歉是想把代码放进去。但是类似于 for(int i = 0; i
  • 艾哈迈德的回答能回答你的问题吗?

标签: java jbutton listener compareto windowbuilder


【解决方案1】:

由于您需要比较 2 部电影,您可以在 Film Class 中通过实现 Comparable&lt;Film&gt; 然后在类中实现 compareTo 方法来做到这一点。

在那之后,将您的电影保存在任何collection 中作为ArrayList,然后只需调用Collections.max(films) 以获取列表中的最大电影对象。

这是一个用于演示的电影类:

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;
  }
}

这是主要的:

public 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     
    }

所以你的actionPerformed会是这样的

@Override
public void actionPerformed(ActionEvent e) {
    Film maxFilm = Collections.max(films);
    //then use maxFilm object to do anything you need

}

【讨论】:

  • 哇,感谢您的详细回复!非常感谢我设法使它工作!
猜你喜欢
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 2021-03-19
  • 2018-02-05
  • 2020-07-04
  • 1970-01-01
相关资源
最近更新 更多