Java için yeni ve javaFx kullanarak java uygulamaları geliştirmeye başladım. çok arama yaptım ama javaFx'te herhangi bir tarih ve zaman seçicisi bulamadı. Hatta JFxtras'ı denedim ama çalışmıyor. Bu arada javafx 2.2.3 ve java 7 kullanıyorum. Herhangi bir yardım çok takdir edilecektir.javaFx için herhangi bir Tarih ve Zaman seçicisi var mı?
cevap
JFXtras projesi, JavaFX 2.2 için bir çalışma sürümüne sahiptir. 2.2 şubesinin altındaki repo numaralı telefondan CalendarPicker
, CalendarTimePicker
, ... adresine bakın.
En son sürümü (2.2-r6-SNAPSHOT) jfxtras.org karşıdan yükleyerek deneyebilirsiniz.
Bu kısa pasajı tarih ve saati hem toplama için bir takvim oluşturur:
@Override
public void start(Stage primaryStage) {
CalendarPicker dateTime = new CalendarPicker();
dateTime.withCalendar(Calendar.getInstance());
dateTime.withShowTime(Boolean.TRUE);
dateTime.withLocale(Locale.ENGLISH);
dateTime.calendarProperty().addListener(new ChangeListener<Calendar>() {
@Override
public void changed(ObservableValue<? extends Calendar> ov, Calendar t, Calendar t1) {
System.out.println("Selected date: "+t1.getTime().toString());
}
});
StackPane root = new StackPane();
root.getChildren().add(dateTime);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Date & Time from JFXtras 2.2");
primaryStage.setScene(scene);
primaryStage.show();
}
Ben en uygun kaydırıcılarıyla değiştirmek yerine klavye ile saati girin bulabilirsiniz.
Ben de DatePicker TextField onBlur düzenlenemez değeri taahhüt etmediğini o rahatsız edici buluyorum, bu yüzden aşağıdaki kod yanı giderir: Bu gibi görünmeye dahil DatePicker uzatmak oldukça kolay .
pasajı brevety için KOTLIN yazılır, kolayca IntelliJ IDEA yoluyla Java dönüştürebilirsiniz:
import javafx.beans.property.SimpleObjectProperty
import javafx.scene.control.DatePicker
import javafx.scene.input.KeyCode
import javafx.scene.input.KeyEvent
import javafx.scene.input.MouseEvent
import javafx.util.StringConverter
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.LocalTime
import java.time.format.DateTimeFormatter
class DateTimePicker(val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")) : DatePicker() {
private var dateTimeValue = SimpleObjectProperty<LocalDateTime>(LocalDateTime.now())
init {
converter = object : StringConverter<LocalDate>() {
override fun toString(value: LocalDate?): String {
return if (dateTimeValue.get() != null) dateTimeValue.get().format(formatter) else ""
}
override fun fromString(value: String?): LocalDate? {
if (value == null) {
dateTimeValue.set(null)
return null
}
dateTimeValue.set(LocalDateTime.parse(value, formatter))
return dateTimeValue.get().toLocalDate()
}
}
// Syncronize changes to the underlying date value back to the dateTimeValue
valueProperty().addListener { observable, old, new ->
if (new == null) {
dateTimeValue.set(null)
} else {
if (dateTimeValue.get() == null) {
dateTimeValue.set(LocalDateTime.of(new, LocalTime.now()))
} else {
val time = dateTimeValue.get().toLocalTime()
dateTimeValue.set(LocalDateTime.of(new, time))
}
}
}
// Syncronize changes to dateTimeValue back to the underlying date value
dateTimeValue.addListener { observable, old, new ->
valueProperty().set(new?.toLocalDate())
}
// Persist changes onblur
editor.focusedProperty().addListener { observable, old, new ->
if (!new)
simulateEnterPressed()
}
}
private fun simulateEnterPressed() =
editor.fireEvent(KeyEvent(editor, editor, KeyEvent.KEY_PRESSED, null, null, KeyCode.ENTER, false, false, false, false))
fun dateTimeValueProperty() = dateTimeValue;
}
dateTimeValueProperty için LocalDateTime mülkiyet Bind.
bunu java kodu olarak sağlayabilir misiniz? (Onun bir java sorusu ve intelliJ ücretsiz değil) – lumo
Elbette, onu Java koduna dönüştürüp buraya gönderiyorum. Ancak IntelliJ Community Edition tamamen ücretsizdir. –
Yukarıdaki DateTimePicker denetiminin bir Java sürümü, biraz geliştirilmiş.
Bu kod artık TornadoFX Controls'un bir parçasıdır ve GitHub Repo'nun en son DateTimePicker.java sürümüne bakabilirsiniz. Kontrol bu koordinatlar altında yanı Maven Central mevcuttur: Şu anda
<dependency>
<groupId>no.tornado</groupId>
<artifactId>tornadofx-controls</artifactId>
<version>1.0.3</version>
</dependency>
uygulaması:
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.DatePicker;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.util.StringConverter;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
/**
* A DateTimePicker with configurable datetime format where both date and time can be changed
* via the text field and the date can additionally be changed via the JavaFX default date picker.
*/
@SuppressWarnings("unused")
public class DateTimePicker extends DatePicker {
public static final String DefaultFormat = "yyyy-MM-dd HH:mm";
private DateTimeFormatter formatter;
private ObjectProperty<LocalDateTime> dateTimeValue = new SimpleObjectProperty<>(LocalDateTime.now());
private ObjectProperty<String> format = new SimpleObjectProperty<String>() {
public void set(String newValue) {
super.set(newValue);
formatter = DateTimeFormatter.ofPattern(newValue);
}
};
public DateTimePicker() {
getStyleClass().add("datetime-picker");
setFormat(DefaultFormat);
setConverter(new InternalConverter());
// Syncronize changes to the underlying date value back to the dateTimeValue
valueProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == null) {
dateTimeValue.set(null);
} else {
if (dateTimeValue.get() == null) {
dateTimeValue.set(LocalDateTime.of(newValue, LocalTime.now()));
} else {
LocalTime time = dateTimeValue.get().toLocalTime();
dateTimeValue.set(LocalDateTime.of(newValue, time));
}
}
});
// Syncronize changes to dateTimeValue back to the underlying date value
dateTimeValue.addListener((observable, oldValue, newValue) -> {
setValue(newValue == null ? null : newValue.toLocalDate());
});
// Persist changes onblur
getEditor().focusedProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue)
simulateEnterPressed();
});
}
private void simulateEnterPressed() {
getEditor().fireEvent(new KeyEvent(getEditor(), getEditor(), KeyEvent.KEY_PRESSED, null, null, KeyCode.ENTER, false, false, false, false));
}
public LocalDateTime getDateTimeValue() {
return dateTimeValue.get();
}
public void setDateTimeValue(LocalDateTime dateTimeValue) {
this.dateTimeValue.set(dateTimeValue);
}
public ObjectProperty<LocalDateTime> dateTimeValueProperty() {
return dateTimeValue;
}
public String getFormat() {
return format.get();
}
public ObjectProperty<String> formatProperty() {
return format;
}
public void setFormat(String format) {
this.format.set(format);
}
class InternalConverter extends StringConverter<LocalDate> {
public String toString(LocalDate object) {
LocalDateTime value = getDateTimeValue();
return (value != null) ? value.format(formatter) : "";
}
public LocalDate fromString(String value) {
if (value == null) {
dateTimeValue.set(null);
return null;
}
dateTimeValue.set(LocalDateTime.parse(value, formatter));
return dateTimeValue.get().toLocalDate();
}
}
}
dateTimeValue
özellik zamanla değerini içerir ve valueProperty
sadece tarih değeri içerir.
Bu bileşen için henüz test eklemedim, bu nedenle uygulama değişebilir, GitHub'u en son sürüm için kontrol edin.
NullableTimeStamp ... ile çalışabilmek için biraz "geliştirilmiş" (en azından benim ihtiyaçlarım için) sürümü, iyi, sıfır (MySQL ile) için ...
Dunno bu kimseye yardımcı olabilir ama burada ise:
NullableTimeStamp:
public class NullableTimestamp extends Timestamp {
public NullableTimestamp() {
super(0L);
}
public NullableTimestamp(long value) {
super(value);
}
@Override
public String toString() {
return this.getTime() > 0L ? super.toString() : "";
}
public static NullableTimestamp valueOf(LocalDateTime localDateTime) {
return new NullableTimestamp(Timestamp.valueOf(localDateTime).getTime());
}
}
ve DateTimePicker:
public class DateTimePicker extends DatePicker {
public static final String DefaultFormat = "yyyy-MM-dd HH:mm";
private DateTimeFormatter formatter;
private ObjectProperty<LocalDateTime> dateTimeValue = new SimpleObjectProperty<>(LocalDateTime.now());
private ObjectProperty<String> format = new SimpleObjectProperty<String>() {
public void set(String newValue) {
super.set(newValue);
formatter = DateTimeFormatter.ofPattern(newValue);
}
};
public DateTimePicker() {
getStyleClass().add("datetime-picker");
setFormat(DefaultFormat);
setConverter(new InternalConverter());
// Syncronize changes to the underlying date value back to the dateTimeValue
valueProperty().addListener((observable, oldValue, newValue) -> {
if (newValue == null) {
dateTimeValue.set(null);
} else {
if (dateTimeValue.get() == null) {
dateTimeValue.set(LocalDateTime.of(newValue, LocalTime.now()));
} else {
LocalTime time = dateTimeValue.get().toLocalTime();
dateTimeValue.set(LocalDateTime.of(newValue, time));
}
}
});
// Syncronize changes to dateTimeValue back to the underlying date value
dateTimeValue.addListener((observable, oldValue, newValue) -> {
setValue(newValue == null ? null : newValue.toLocalDate());
});
// Persist changes onblur
getEditor().focusedProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue)
simulateEnterPressed();
});
}
private void simulateEnterPressed() {
getEditor().fireEvent(new KeyEvent(getEditor(), getEditor(), KeyEvent.KEY_PRESSED, null, null, KeyCode.ENTER, false, false, false, false));
}
public LocalDateTime getDateTimeValue() {
return dateTimeValue.get();
}
public void setDateTimeValue(LocalDateTime dateTimeValue) {
if(dateTimeValue.isAfter(LocalDateTime.of(1971, 6, 30, 12, 00)))
this.dateTimeValue.set(dateTimeValue);
else
this.dateTimeValue.set(null);
}
public ObjectProperty<LocalDateTime> dateTimeValueProperty() {
return dateTimeValue;
}
public String getFormat() {
return format.get();
}
public ObjectProperty<String> formatProperty() {
return format;
}
public void setFormat(String format) {
this.format.set(format);
}
class InternalConverter extends StringConverter<LocalDate> {
public String toString(LocalDate object) {
LocalDateTime value = getDateTimeValue();
return (value != null) ? value.format(formatter) : "";
}
public LocalDate fromString(String value) {
if (value == null) {
dateTimeValue.set(null);
return null;
}
dateTimeValue.set(LocalDateTime.parse(value, formatter));
return dateTimeValue.get().toLocalDate();
}
}
}
Temelde NULL 0L Damgası değeri maskeleri sanki ... umarım bu, şerefe yardımcı olabilir
- 1. Sorgulama panelindeki bağlama değişkeni için Tarih Zaman seçicisi
- 2. Tarih seçicisi olarak takvimi kullan
- 3. C++ 'da standart bir tarih/zaman sınıfı var mı?
- 4. Moodle için herhangi bir API var mı?
- 5. iOS'ta Android'in herhangi bir karşılığı var mı?
- 6. ImageMagick. Derlemek ve çalıştırmak için herhangi bir yolu var mı?
- 7. JavaFX için iyi bir MVVM/MVP/MVC çerçevesi var mı?
- 8. Tarih aralığı seçicisi, Google Analytics tarih aralığı seçicisine benziyor mu?
- 9. bilgi almak için herhangi bir yolu var mı github API
- 10. Herhangi bir tarih dizesini saat dilimi olmadan zaman damgasına dönüştürün
- 11. javafx flowpane 's columnHalignment için bir css eşdeğeri var mı?
- 12. PLINQ'in herhangi bir faydası var mı?
- 13. ASP.NET için JAWS dostu bir tarih seçici var mı?
- 14. JavaFX'te yol gradyanı oluşturmanın herhangi bir yolu var mı?
- 15. Herhangi bir sprite koleksiyonunu bilen var mı?
- 16. Bahar Roo için Thymeleaf için herhangi bir ekleme var mı?
- 17. Flyway geçişlerini "sıkıştırmak" için herhangi bir yol var mı?
- 18. Kimlik ve sınıf için aynı CSS seçicisi
- 19. Delphi için herhangi bir Önbellek Çerçevesi var mı?
- 20. "Vurgulu" kodun herhangi bir yolu var mı?
- 21. Tomcat'e herhangi bir IIS eşdeğeri var mı?
- 22. Bir sihirbaz oluşturmak için herhangi bir desen var mı?
- 23. JavaScript için bir BCE/CE tarih kütüphanesi var mı?
- 24. Scala için uygun bir tarih/saat API var mı?
- 25. Herhangi bir IPMI simülatörü var mı?
- 26. Herhangi bir FACEBOX alt türü var mı?
- 27. Herhangi bir İşleme programı profiler var mı?
- 28. TSQL tarih alanı ve bir zaman alan
- 29. GC.disable'ın herhangi bir performans dezavantajı var mı?
- 30. Herhangi bir ücretsiz php tarayıcı var mı?
Java 8'e çıkma şansınız var mı? – Adam
Hayır efendim. Sadece bunun üzerinde çalışmak zorundayım. – Manivannan
[Christian Schudt tarafından oluşturulan tarih seçiciyi] kullanabilirsiniz (http://myjavafx.blogspot.ch/2012/01/javafx-calendar-control.html). Bir eğitim için, [Marco Jakob blogunu] takip edebilirsiniz (http://code.makery.ch/blog/javafx-2-date-picker/) – ItachiUchiha