Я работаю над приложением типа финансового контроля для своих родителей в Java с использованием JavaFX, но у меня проблема с графическим интерфейсом. Я искал Google и код для проблемы, но я не могу найти ничего плохого.JavaFX Данные TableView не видны с CellValueFactory
Это ссылка, я использую в качестве ориентира: http://docs.oracle.com/javafx/2/ui_controls/table-view.htm
Я трогание с календарем, используя TableView. Кстати, есть ли другой способ сделать календар с JavaFX?
В любом случае, вот код:
пакет финансов;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
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;
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Main extends Application {
Calendar calendar = new GregorianCalendar();
private TableView<Week> table = new TableView<Week>();
final ObservableList<Week> data = FXCollections.observableArrayList(
new Week("1", "2", "3", "4", "5", "6", "7")
);
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(new Group());
primaryStage.setTitle("Finance Control");
primaryStage.setWidth(1000);
primaryStage.setHeight(700);
Label month = new Label(getMonthForInt(calendar.get(Calendar.MONTH)));
month.setFont(new Font("Arial", 30));
table.setEditable(false);
table.setPrefHeight(500);
table.setPrefWidth(882);
TableColumn sun = new TableColumn("Sunday");
TableColumn mon = new TableColumn("Monday");
TableColumn tue = new TableColumn("Tuesday");
TableColumn wed = new TableColumn("Wednesday");
TableColumn thu = new TableColumn("Thursday");
TableColumn fri = new TableColumn("Friday");
TableColumn sat = new TableColumn("Saturday");
sun.setCellValueFactory(
new PropertyValueFactory<Week, String>("a")
);
mon.setCellValueFactory(
new PropertyValueFactory<Week, String>("b")
);
tue.setCellValueFactory(
new PropertyValueFactory<Week, String>("c")
);
wed.setCellValueFactory(
new PropertyValueFactory<Week, String>("d")
);
thu.setCellValueFactory(
new PropertyValueFactory<Week, String>("e")
);
fri.setCellValueFactory(
new PropertyValueFactory<Week, String>("f")
);
sat.setCellValueFactory(
new PropertyValueFactory<Week, String>("g")
);
TableColumn[] days = {sun, mon, tue, wed, thu, fri, sat};
for (TableColumn day: days) {
day.setPrefWidth(table.getPrefWidth()/7);
}
table.setItems(data);
table.getColumns().addAll(sun, mon, tue, wed, thu, fri, sat);
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.setAlignment(Pos.CENTER);
vbox.getChildren().addAll(month, table);
((Group) scene.getRoot()).getChildren().addAll(vbox);
primaryStage.setScene(scene);
primaryStage.show();
}
String getMonthForInt(int num) {
String month = "wrong";
DateFormatSymbols dfs = new DateFormatSymbols();
String[] months = dfs.getMonths();
if (num >= 0 && num <= 11) {
month = months[num];
}
return month;
}
public static void main(String[] args) {
launch(args);
}
public static class Week {
String a;
String b;
String c;
String d;
String e;
String f;
String g;
public Week(String a, String b, String c, String d, String e, String f, String g) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
}
}
}
Это то, что происходит, когда я запускаю его. Я бы ожидал, что он заполнит значениями, которые я дал объекту Constructor of the Week, но это не так: он просто показывает пустые ячейки.
Я использую IDEA IDE, если это имеет значение ... Я буду благодарен за любую помощь с этим или какими-либо комментариями. Вероятно, в какой-то момент я, вероятно, буду использовать сценарист, но прежде, чем перейти к построителю GUI, я хотел бы получить представление о самом коде.
Мне было бы приятно, если бы вы показали нам, как это сделать. – aero