Приведенный ниже код этой Outout:Сортировка столбцов таблицы на заголовке?
Если вы попробуете этот код, Vaadin автоматически умеет сортировать по CARMAKE & TopSpeed при нажатии на их заголовки.
PASSENGER & DRIVER не сортируются в заголовке.
Как это сделать? Где в таблице говорится: «Я не знаю, как сортировать что-то типа ЧЕЛОВЕКА, чтобы я не добавил слушателя кликов к этому заголовку»?
Мне удалось удлинить балкуItemContainer & переопределить метод сортировки. Затем я мог бы добавить кнопки в представление, сортирующие столбцы. Но я хочу иметь возможность щелкнуть заголовки таблиц!
Я думал, что могу добавить TableHeaderClickListeners, но почему ваадин уже делает это для меня, когда я переопределяю сортировку beanItemContainer? Это уже сделано для 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;
}
}