gpt4 book ai didi

java - 单击标题对表格列进行排序?

转载 作者:行者123 更新时间:2023-11-30 08:56:26 25 4
gpt4 key购买 nike

下面的代码产生这个输出:

enter image description here

如果您尝试此代码,当您单击它们的标题时,vaadin 会自动知道如何对 CARMAKE 和 TOPSPEED 进行排序。

PASSENGER & DRIVER 不会按标题点击排序。

我该怎么做?表格在哪里说“我不知道如何对 PERSON 类型的东西进行排序,所以我不会向该标题添加点击监听器”?

我能够扩展 beamItemContainer 并覆盖排序方法。然后我可以将按钮添加到对列进行排序的 View 。但我希望能够单击表格标题!

我原以为我可以添加 TableHeaderClickListeners,但为什么在我重写 beanItemContainer 的排序时 vaadin 没有为我做这件事?它已经为 CARMAKE 和 TOPSPEED 做到了这一点。

@Override
public void init(VaadinRequest request) {

BeanItemContainer<SportsCar> beans = new BeanItemContainer<SportsCar>(SportsCar.class);

Person tom = new Person("Tom");
Person dick = new Person("Dick");
Person harry = new Person("Harry");

beans.addBean(new SportsCar("ferrari",180.0,tom,dick));
beans.addBean(new SportsCar("Aston Martin",165.0,harry,null));

Table t = new Table();
t.setContainerDataSource(beans);
t.setSizeFull();
this.setContent(t);

}

public class SportsCar {
String carMake;
double topspeed;
Person driver;
Person Passenger;

public SportsCar(String carMake, double topspeed, Person driver, Person passenger) {
this.carMake = carMake;
this.topspeed = topspeed;
this.driver = driver;
this.Passenger = passenger;
}

/**
* Get the carMake.
*
* @return the carMake.
*/
public String getcarMake() {
return carMake;
}

/**
* Set the carMake.
*
* @param carMake
* the carMake.
*/
public void setcarMake(String carMake) {
this.carMake = carMake;
}

/**
* Get the topspeed.
*
* @return the topspeed.
*/
public double getTopspeed() {
return topspeed;
}

/**
* Set the topspeed.
*
* @param topspeed
* the topspeed.
*/
public void setTopspeed(double topspeed) {
this.topspeed = topspeed;
}

/**
* Get the driver.
*
* @return the driver.
*/
public Person getDriver() {
return driver;
}

/**
* Set the driver.
*
* @param driver
* the driver.
*/
public void setDriver(Person driver) {
this.driver = driver;
}

/**
* Get the passenger.
*
* @return the passenger.
*/
public Person getPassenger() {
return Passenger;
}

/**
* Set the passenger.
*
* @param passenger
* the passenger.
*/
public void setPassenger(Person passenger) {
Passenger = passenger;
}

}

public class Person {

String carMake;

/**
* Create a Demo.Person.
*/
public Person(String carMake) {
this.carMake = carMake;
}

/**
* Get the carMake.
*
* @return the carMake.
*/
public String getcarMake() {
return carMake;
}

/**
* Set the carMake.
*
* @param carMake
* the carMake.
*/
public void setcarMake(String carMake) {
this.carMake = carMake;
}

@Override
public String toString(){
return carMake;
}
}

最佳答案

Java 本身并不知道如何比较对象。首先,您必须指定,可以通过实现“Comparable”接口(interface)来比较这些对象。然后你需要像这样覆盖 compareTo 方法:

public int compareTo(Person p) {
return getcarMake().compareTo(p.getcarMake());
}

这应该可以解决问题(不过我没有测试过)。

关于java - 单击标题对表格列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com