gpt4 book ai didi

javafx-2 - JavaFX : TableView: Arrow for a column sorted by default

转载 作者:行者123 更新时间:2023-12-04 01:24:51 24 4
gpt4 key购买 nike

我有一个简单的 java fx 应用程序,它有一个表 View 。表格 View 显示了一些按特定顺序排序的数据。有没有办法显示箭头(默认情况下)指示数据已按该顺序排序?

我的代码如下:

import java.util.Collections;

import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class TableViewSample extends Application
{

private TableView<Person> tableView = new TableView<Person>();
private final ObservableList<Person> data = FXCollections.observableArrayList(new Person(
"Allan", "Smith", "allan.smith@example.com",
22), new Person("Zombie", "Jack",
"zombie.jack@test.com", 23), new Person(
"Michael", "Rock", "michael.rock@yahoo.com",
24), new Person("Best", "Jones",
"best.jones@example.com", 11), new Person(
"Michael", "Brown",
"michael.brown@example.com", 14));

public static void main(String[] args)
{
launch(args);
}

@Override
public void start(Stage stage)
{
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(650);
stage.setHeight(500);

final Label label = new Label("Roster");
label.setFont(new Font("Arial", 10));

tableView.setEditable(true);

TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));


TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));

TableColumn emailCol = new TableColumn("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));

TableColumn ageCol = new TableColumn("Age");
ageCol.setMinWidth(200);
ageCol.setCellValueFactory(new PropertyValueFactory<Person, Integer>("age"));

Collections.sort(data);

tableView.setItems(data);
tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol, ageCol);


final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.getChildren().addAll(label, tableView);

((Group) scene.getRoot()).getChildren().addAll(vbox);

stage.setScene(scene);
stage.show();
}
public static class Person implements Comparable<Person>
{

private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private final SimpleStringProperty email;
private final SimpleIntegerProperty age;


private Person(String fName, String lName, String email, int age)
{
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
this.email = new SimpleStringProperty(email);
this.age = new SimpleIntegerProperty(age);
}

public SimpleIntegerProperty getAge()
{
return age;
}

public void setAge(int passedAge)
{
age.set(passedAge);
}

public String getFirstName()
{
return firstName.get();
}

public void setFirstName(String fName)
{
firstName.set(fName);
}

public String getLastName()
{
return lastName.get();
}

public void setLastName(String fName)
{
lastName.set(fName);
}

public String getEmail()
{
return email.get();
}

public void setEmail(String fName)
{
email.set(fName);
}

public int compareTo(Person o)
{
return firstName.get().compareTo(o.getFirstName());
}
}
}

最佳答案

试试

...
firstNameCol.setSortType(TableColumn.SortType.ASCENDING);
...
tableView.setItems(data);
tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol, ageCol);
tableView.getSortOrder().add(firstNameCol);
...

另见关于以下内容的讨论: Javafx: Re-sorting a column in a TableView .

关于javafx-2 - JavaFX : TableView: Arrow for a column sorted by default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250951/

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