- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在试图弄清楚这个问题。这是关于JavaFX控件在按下回车键时选择月份、数字日和年的名称。我什至尝试使用面向对象来解决这个问题。问题在图片链接中。 Here is the question in this link.
新的编辑和代码:我为了获取星期几而休息了一天,例如 2012 年 1 月 1 日应该是第 1 天,作为控制台中的答案:星期几:1 而不是 2。
public class DayOfWeek extends Application {
private String[] months = { "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER",
"OCTOBER", "NOVEMBER", "DECEMBER" };
private String[] days = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16",
"17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" };
String s1 = "";
int k = 0;
String s2 = "";
int x = 0;
@Override
public void start(Stage primaryStage) {
// add a gridpane
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
// add a label for original message top left side
Label label1 = new Label("Month: ");
GridPane.setConstraints(label1, 0, 0);
ListView<String> lv = new ListView<>(FXCollections.observableArrayList(months));
lv.setPrefSize(100, 100);
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
GridPane.setConstraints(lv, 1, 0);
Label label2 = new Label("Day: ");
GridPane.setConstraints(label2, 2, 0);
ListView<String> lvdays = new ListView<>(FXCollections.observableArrayList(days));
lvdays.setPrefWidth(50);
lvdays.setPrefHeight(75);
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
GridPane.setConstraints(lvdays, 3, 0);
Label label3 = new Label("Year: ");
GridPane.setConstraints(label3, 4, 0);
TextField textfield3 = new TextField();
GridPane.setConstraints(textfield3, 5, 0);
lv.setOnMouseClicked(e -> {
s1 = lv.getSelectionModel().getSelectedItem();
k = lv.getSelectionModel().getSelectedIndex();
System.out.println(lv.getSelectionModel().getSelectedItem());
});
lvdays.setOnMouseClicked(e2 -> {
s2 = lvdays.getSelectionModel().getSelectedItem();
x = lvdays.getSelectionModel().getSelectedIndex();
System.out.println(lvdays.getSelectionModel().getSelectedItem());
});
textfield3.setOnKeyPressed(e3 -> {
if (e3.getCode() == KeyCode.ENTER) {
GregorianCalendar cal2 = new GregorianCalendar(textfield3.getLength(), k, x);
System.out.println("Day of Week: " + cal2.get(Calendar.DAY_OF_WEEK));
}
});
// add it to the parent
grid.getChildren().addAll(label1, lv, label2, lvdays, label3, textfield3);
// set a scene and place show it
Scene scene = new Scene(grid, 600, 200);
primaryStage.setTitle("Day of Week");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
最佳答案
首先,不要将字符串填充到 ListView 中。使用 Month.values()
填充月份 ListView ,并使用 Integer
对象填充月份中的天数。当取出所选项目时,这会更方便,并且可以节省您在类顶部声明数组的时间。
在下面,我假设您有一个名为 m
的变量,而不是 s1
,其类型为 Month
,表示月份, s2
的类型为 Integer
(您应该找到一个更好的名称)。
String yearText = textfield3.getText();
try {
int year = Integer.parseInt(yearText);
LocalDate date = LocalDate.of(year, m, s2);
System.out.println("Day of Week: " + date.getDayOfWeek());
} catch (NullPointerException | NumberFormatException | DateTimeException e) {
System.out.format("Not a valid date: %s %s %d", yearText, m, s2);
}
避免使用GregorianCalendar
。该类设计得很差,幸运的是早已过时了。而是使用现代 Java 日期和时间 API java.time 中的 LocalDate
。
与 GregorianCalendar
构造函数相反,如果您向其传递无效值,例如 2019 年 2 月 29 日,LocalDate.of
方法将引发异常。这将有所帮助您按照要求向用户报告无效日期。
您的代码出了什么问题?
textfield3.getLength()
。假设输入了四位数的年份,这将为您提供第 4 年(那是几千年前的事了)。lvdays.getSelectionModel().getSelectedIndex()
表示月份中的某一天时,您会在 ListView 的列表中获得从 0 开始的索引。因此,当用户选择 1
时,您会得到 0 等。其他提示:学习发明好的变量名称。它确实区分了有值(value)的代码和无值(value)的代码。此外,当在 Stack Overflow 上提问时,如果人们可以轻松阅读您的代码,他们将更有可能帮助您,而变量名 s1
、s2
则无法做到这一点。 k
和 x
。
链接
Oracle tutorial: Date Time解释如何使用 java.time。
关于java - 公历 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54729024/
我正在做一项作业,涉及使用 GregorianCalendar。规范说我需要使用 setLenient(false);我该怎么做呢?我还需要设置一个固定日期(2009 年 1 月 1 日),以便我的计
嘿伙计们,我知道这是一个非常简单的问题,但我是 Java 新手,所以请耐心等待。我创建了一个程序,可以计算一本书发行后返回的时间!所以请帮帮我。 这是我的代码: public void loan(
我在夏令时方面遇到了一个奇怪的问题。我有一个 java 程序计划在每天上午 00:05 运行,但昨天它在 23:05 运行。我正在使用公历在java中安排这个程序。在此之前,它从未在 23:05 运行
我在 Java 中使用 GregorianCalendar,我想知道如何使用它来检查日期是否有效(例如:检查 2 月 29 日是否仅在闰年, 检查日期是否不早于当前数据等)。 我已经创建了一个 Gre
我一直在试图弄清楚这个问题。这是关于JavaFX控件在按下回车键时选择月份、数字日和年的名称。我什至尝试使用面向对象来解决这个问题。问题在图片链接中。 Here is the question in
这个问题已经有答案了: Why is January month 0 in Java Calendar? (18 个回答) 已关闭 8 年前。 对于此代码,我必须做的就是使用 GregorianCal
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎偏离主题,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或 include a mini
我创建了一个 TreeMap的 存储引入 GPS 闰秒的日期: leapSecondsDict = new TreeMap(); GregorianCalendar calendar = ne
在完成 JUnit 之后,我正在做一些基于文档的测试,在表格中包含以下项目 输入变量 - 预期结果 - 实际结果......通过或失败...... 如果我将日期和时间传递给我的方法 “01AUG07”
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Java Calendar Setting Incorrectly 我有这个代码: GregorianCalenda
我必须为我的 Java 类(class)制作一个功能齐全的日历,但我被卡住了。我正在使用 GregorianCalendar 来获取当前的日、月、年等。我正在使用 JButton 来填充填写日历的 4
我正在使用公历来设置日期值并尝试获取设置的值。代码如下 Constants.sSetDate_calendar = new GregorianCalendar(year,month,day);//
我有一个 9 月 2 日星期二的 GregorianCalendar 实例。 valñue 以毫秒为单位进行检查,没有问题。我想要下一个星期日(7 日)23:59:59 的另一个日历。所以: Greg
我有一个 JSP 页面,里面有一个 java 变量,其名称为 ${entry.date},该变量的类型为 Gregorian Calendar ,它放置在循环并最终生成错误日志表。现在我的问题是,在我
下面的程序是教程的一部分。我在这里有一些困惑包含以下几行: GregorianCalendar gCal = new GregorianCalendar();
我正在编写一个类来简化我可以使用 GregorianCalendar 进行的所有操作。我需要做的操作是:- 获取字符串格式的日期,翻译成意大利语;- 在两个日期之间进行减法。我没有使用过日历、日期和时
我是一个非常业余的编码员,他似乎无法解决从用户输入的整数中获取星期几(例如星期日、星期一等)的问题。我只是想给用户一条消息,其中列出了 (mm/dd/yyyy, dayOfWeek),但我没有改变星期
一些历法改革者寻求使一年中每个月的长度相等。这通常是通过创建一个日历来实现的,该日历有 13 个月,每个月有 4 周(28 天),共 364 天。已知最早的此类建议是格鲁吉亚日历 - more det
相同的代码 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:
我正在尝试将 pandas 数据帧转换为 SPSS 格式,但在转换 datetime64 变量时遇到问题。 使用以下代码: import pandas as pd import datetime as
我是一名优秀的程序员,十分优秀!