我有一个简单的JavaFX应用程序,它有一个表视图。表格视图显示了一些按特定顺序排序的数据。有没有办法显示箭头(默认情况下)指示数据已按该顺序排序?
我的代码如下:
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:在TableView中重新排序列的讨论。
问题内容: 更新时间 : 输出: 当我们添加时,需要一些信息来设置默认排序整数值,但是如果我将字符串添加到设置,则默认情况下不会排序。 更新: 并且Caps字母将在运行多次后始终进行排序。 java版本“ 1.6.0_26” Java™SE运行时环境(内部版本1.6.0_26-b03)Java HotSpot™客户端VM(内部版本20.1-b02,混合模式,共享) 请给我一些想法。谢谢 问题答案:
问题内容: 假定通过执行以下操作来更改MySQL表(ISAM)的默认顺序: 从现在开始,假设我的查询中未指定“ ORDER BY”(即“ SELECT * FROM tablename WHERE … LIMIT 10;”),我是否可以 保证 按“ columnname ASC”的顺序从表中检索到记录? 我应该注意什么极端情况吗? 更新#1:非常 感谢Quassnoi,他正确地指出INSERT和D
问题内容: 谁能告诉我为什么无序列表应用了默认缩进/填充?CSS重置浏览器可以解决此问题吗? 问题答案: 它具有默认的缩进/填充,以使项目符号不会超出列表本身。 CSS重置可能包含也可能不包含重置列表的规则,具体取决于您使用的规则。
根据我的理解,默认情况下,导航到任何页面后都会出现一个向后箭头。有没有办法不在我选择的某一页上包括后面的箭头?
问题内容: 是否可以替换WCF的默认JSON序列化(我目前正在测试行为),并作为MIME类型传递。特别是,我不喜欢默认情况下每个属性都是键/值对,例如: 我仅将服务用于启用JSON的端点(使用jQuery + WCF请求数据)。 问题答案: 您可以使用消息格式化程序来更改用于处理JSON的序列化程序。https://docs.microsoft.com/zh- cn/archive/blogs/c
我们用露西做了一些测试。Net 3.0.3在搜索和插入方面。 在测试中,我们使用了基于真实英语单词的关键词分析器和文本生成器。 当索引点击大约800万个文档,同时搜索1000个随机句子时,搜索需要25分钟才能完成。(默认排序) 如果我们将搜索更改为文档排序: 搜索只需几秒钟即可完成。 有什么好处?默认排序是否基于相关性?为什么会产生如此巨大的影响? 此外,如果我们从int减少命中视频数。MaxVa