Ich habe eine Tableview mit ein paar Spalten mit FXML erstellt:Wie kann ich angeben, wie ein Objekt in eine Zeichenfolge konvertiert wird, um es in einem JavaFX TableView anzuzeigen?
<TableView fx:id="logTable" BorderPane.alignment="CENTER">
<columns>
<TableColumn fx:id="timestampColumn" editable="false" text="Timestamp">
<cellValueFactory>
<PropertyValueFactory property="timestamp"/>
</cellValueFactory>
</TableColumn>
<TableColumn fx:id="actionColumn" editable="false" text="Action">
<cellValueFactory>
<PropertyValueFactory property="action"/>
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
Ich habe dann ein Objekt wie folgt definiert:
private ObservableList<LogEntry> log = FXCollections.observableArrayList();
, die für die Tableview als das Modell festgelegt ist:
logTable.setItems(log);
Die LogEntries wie folgt aussehen:
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import org.joda.time.DateTime;
public class LogEntry {
private SimpleObjectProperty<DateTime> timestamp = new SimpleObjectProperty<>();
private SimpleStringProperty action = new SimpleStringProperty();
public LogEntry(String format, Object... args) {
this.timestamp.setValue(new DateTime());
String s = String.format(format, args);
System.out.println(s);
this.action.setValue(s);
}
public DateTime getTimestamp() {
return timestamp.getValue();
}
public String getAction() {
return action.getValue();
}
}
Meine Frage ist, wie kann ich angeben, wie die Jodatime DateTimes in Zeichenfolgen für die Anzeige konvertiert werden? Ich möchte sie mit dem aktuellen Gebietsschema konvertieren (aber ich möchte, dass die Spalte noch funktioniert).
OT zu aktualisieren: Sind Sie gebunden zu Java 7 oder gezwungen Joda Zeit aus einem anderen Grund hier zu benutzen? Die Java 8 Time API macht Joda Time grundsätzlich überflüssig (es basiert sehr stark auf Joda Time und die API ist sehr ähnlich). Die [Joda Time-Homepage] (http://www.joda.org/joda-time/) sagt eigentlich: ** "Beachten Sie, dass Benutzer ab Java SE 8 aufgefordert werden, zu java.time (JSR-310) - ein Kernteil des JDK, der dieses Projekt ersetzt. "** –
@James_D: Ich benutze tatsächlich Java 8. Ich wusste nicht, dass Java 8 es redundant macht. Ich muss mich darum kümmern. Vielen Dank. – Pablo
@Pablo Das Projekt [JSR 310] (https://jcp.org/en/jsr/detail?id=310), das * java.time * definiert, wird von demselben Mann geleitet, der * Joda-Time *, [Stephen Colebourne] (https://stackoverflow.com/users/38896/jodastephen). Die * java.time * -Klassen sind eine komplette Neuschreibung von * Joda-Time * mit den gelernten Lektionen. –