使用列锚定TableView可以实现固定某一列在表格中的位置,使其在水平滚动时保持可见。下面是使用列锚定TableView的步骤:
下面是一个示例代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
TableView<Person> tableView = new TableView<>();
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
nameColumn.setPrefWidth(100);
TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));
ageColumn.setPrefWidth(50);
TableColumn<Person, String> emailColumn = new TableColumn<>("Email");
emailColumn.setCellValueFactory(new PropertyValueFactory<>("email"));
emailColumn.setPrefWidth(200);
tableView.getColumns().addAll(nameColumn, ageColumn, emailColumn);
for (int i = 1; i <= 100; i++) {
tableView.getItems().add(new Person("Person " + i, i, "person" + i + "@example.com"));
}
tableView.setFixedCellSize(25);
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
VBox root = new VBox(tableView);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class Person {
private String name;
private int age;
private String email;
public Person(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
}
在这个示例中,我们创建了一个包含姓名、年龄和电子邮件的Person类。然后,我们创建了三个TableColumn对象,分别对应姓名、年龄和电子邮件列,并设置了列的标题和宽度。接下来,我们将这三个列添加到TableView的列集合中。然后,我们使用循环将100个Person对象添加到TableView的行集合中。最后,我们设置了单元格的高度和列的调整策略,并将TableView添加到JavaFX的场景中显示出来。
这是一个简单的使用列锚定TableView的示例,你可以根据实际需求进行修改和扩展。腾讯云提供了云计算相关的产品和服务,你可以参考腾讯云的文档和官方网站获取更多信息。
领取专属 10元无门槛券
手把手带您无忧上云