java - 是否可以在 javaFx 标签中显示字符串格式的表格?
问题描述
public static void printDetails() {
//PRINTING DEFAULT MEMBERS NAMES AS AN ARRAY
int i;
System.out.println (" ");
System.out.printf ("%-20s%-20s%-25s%-25s%-25s%n", "Index", "Name", "membershipDate",
"membershipNumber","member type");
System.out.println("------------------------------------------------------------")
for (i = 0; i < defaultNames.size (); i++) {
System.out.format ("%-20s%-20s%-25s%-25s%-25s%n", i + 1, defaultNames.get (I),
defaultMembershipDate.get (i), defaultMembershipNumber.get (i),defaultMemberType.get (i));
}
}
解决方案
是的,可以在 javaFx 标签中显示一个字符串格式的表格,但它看起来不是很好,因为 James_D 说你应该使用TableView
它会看起来更干净,它也会帮助你保持代码更干净,而不是使用 4 个不同ArrayList
的 s最终会有 1 个ArrayList
对象包含它们自己的数据,您可以将这些对象传递给TableView
并让它为您处理工作
将来/当您为正在处理的任何事情进行编码时,您应该将其更新MembershipData
为正确的数据类型,例如您可以更改startDate
为LocalDate
并且显然将 Number 更改为Integer
它最终会看起来像这样
public class Main extends Application {
@Override
public void start(Stage stage) {
ArrayList<MembershipData> membershipDataArrayList = new ArrayList<>();
for (int i = 1; i < 5; i++) {
String letter = String.valueOf((char) (i + 64));
membershipDataArrayList.add(new MembershipData(letter, ""+i+i+i, ""+i+i+i, letter));
}
showDetails(membershipDataArrayList);
}
public void showDetails(ArrayList<MembershipData> membershipDataArrayList) {
System.out.println (" ");
System.out.printf ("%-20s%-20s%-25s%-25s%-25s%n", "Index", "Name", "membershipDate",
"membershipNumber","member type");
System.out.println("------------------------------------------------------------");
int i = 0;
for (MembershipData membershipData : membershipDataArrayList) {
System.out.format ("%-20s%-20s%-25s%-25s%-25s%n", i++, membershipData.getName(),
membershipData.getStartDate(), membershipData.getNumber() ,membershipData.getType());
}
TableColumn<MembershipData, String> column1 = new TableColumn<>("Name");
column1.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<MembershipData, String> column2 = new TableColumn<>("MemberShip Date");
column2.setCellValueFactory(new PropertyValueFactory<>("startDate"));
TableColumn<MembershipData, String> column3 = new TableColumn<>("MemberShip Number");
column3.setCellValueFactory(new PropertyValueFactory<>("number"));
TableColumn<MembershipData, String> column4 = new TableColumn<>("MemberShip Type");
column4.setCellValueFactory(new PropertyValueFactory<>("type"));
TableView<MembershipData> tableView = new TableView<>();
tableView.getColumns().addAll(column1, column2, column3, column4);
tableView.getItems().addAll(membershipDataArrayList);
VBox vBox = new VBox(tableView);
vBox.setAlignment(Pos.CENTER);
Stage stage = new Stage();
stage.setWidth(475);
stage.setScene(new Scene(vBox));
stage.show();
}
}
这就是您的会员等级的样子
public class MembershipData{
private final String name;
private final String startDate;
private final String number;
private final String type;
public MembershipData(String name, String startDate, String number, String type){
this.name = name;
this.startDate = startDate;
this.number = number;
this.type = type;
}
public String getName() {
return name;
}
public String getStartDate() {
return startDate;
}
public String getNumber() {
return number;
}
public String getType() {
return type;
}
}
推荐阅读
- xodus - 在 Xodus 中禁用缓存
- c++ - 插入排序对数组进行中途排序
- javascript - 为什么我不能正常工作按钮开始时间?
- javascript - 通过 Active-Directory 自动登录网站
- c++ - 修改顺序是否有助于发生之前的关系?
- .net - dotnet new(未找到 wpf)Visual Studio 2019
- reactjs - react redux-beacon 跟踪链接点击分析
- r - ggsignif 包错误 stat_signif 需要以下缺失的美学:y
- excel - 如果内容被用户删除,则用 VBA 填充单元格
- ruby-on-rails - ActiveRecord 中的 .hash