基于javafx的五子棋
对于使用Java Date进行格式化的新手,甚至对于使用Java Date进行格式化的新手,对于有经验的Java开发人员来说,可能都会有些棘手,其中之一就是使用SimpleDateFormat指定日期/时间格式。
SimpleDateFormat
的基于类文档的基于Javadoc的类级别的文档非常详尽,涵盖了表示日期/时间的各个组成部分的模式。
但是,除非人们仔细阅读并理解了这些不同的模式,否则要记住月份的小写字母“ d”和一年中的大写字母“ D”之间的区别或记住小写字母“ m”或“大写字母“ M”使用了几个月而不是几分钟。
在本文中,我看一个用JavaFX编写的简单应用程序,它使开发人员可以快速尝试任意模式,以查看
SimpleDateFormat
如何在给定任意模式的情况下呈现当前日期/时间。
从理论上讲,开发人员可以使用这个简单的工具快速确定其日期/时间模式的效果,但这实际上是应用JavaFX的一个借口。
下面的代码清单包含完整的基于JavaFX 2.x的应用程序。
package dustin.examples;
import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFieldBuilder;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/**
* JavaFX application allowing for testing and demonstration of various String
* formats for date/time.
*
* @author Dustin
*/
public class DateTimeStringFormatDemonstrator extends Application
{
/**
* Generate the application's main pane.
*
* @return Main pane for the application.
*/
private Pane generateMainPane()
{
final VBox vbox = new VBox();
final TextField dateTimeFormatField =
TextFieldBuilder.create().prefWidth(350).alignment(Pos.CENTER)
.promptText("Enter DateFormat")
.build();
vbox.getChildren().add(dateTimeFormatField);
final TextField formattedDateField =
TextFieldBuilder.create().prefWidth(350).alignment(Pos.BASELINE_CENTER)
.promptText("Date Output Goes Here").build();
formattedDateField.setEditable(false);
final Button applyButton = new Button("Apply Format");
applyButton.setPrefWidth(350);
applyButton.setOnMousePressed(
new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent mouseEvent)
{
try
{
final SimpleDateFormat sdf =
new SimpleDateFormat(dateTimeFormatField.getText());
formattedDateField.setText(sdf.format(new Date()));
formattedDateField.setAlignment(Pos.CENTER);
}
catch (Exception ex)
{
formattedDateField.setText("ERROR");
formattedDateField.setAlignment(Pos.CENTER);
}
formattedDateField.setAlignment(Pos.BASELINE_CENTER);
}
});
vbox.getChildren().add(applyButton);
vbox.getChildren().add(formattedDateField);
return vbox;
}
/**
* The method overridden from Application for starting the application.
*
* @param stage Primary stage.
* @throws Exception Exceptions throwing during execution of JavaFX application.
*/
@Override
public void start(final Stage stage) throws Exception
{
stage.setTitle("JavaFX Date/Time String Format Presenter");
final Group group = new Group();
group.getChildren().add(generateMainPane());
final Scene scene = new Scene(group, 350, 65, Color.DARKKHAKI);
stage.setScene(scene);
stage.show();
}
/**
* Main function for running date/time format JavaFX application.
*
* @param arguments Command-line arguments; none expected.
*/
public static void main(final String[] arguments)
{
Application.launch(arguments);
}
}
上面显示的基于JavaFX 2的简单应用程序使您可以轻松地尝试不同的日期/时间格式模式,以查看
SimpleDateFormat
将如何处理每种模式。
接下来显示2012年5月8日星期二晚上使用的一系列此类。
这些示例演示了使用SimpleDateFormat
几个关键方面:
- 大写字母“ M”用于几个月,小写字母“ m”用于分钟。
- “ M”字符数代表月份的表示形式(例如:5月为5、05或“ May”)。
- 大写字母“ D”表示年份中的日期(自1月1日起),而小写字母“ d”表示月份中的日期(自5月1日起)。
- 两个'y'或'Y'数字代表2位数字的年份,但是3或4个'Y'或'y'数字可用于4位数字的年份。
本博客文章中突出显示的简单示例演示了JavaFX的简单性,并提供了JavaFX如何提供图形界面以使Java应用程序更直观的示例。
作为其一部分,将演示JavaFX中的鼠标事件处理以及使用构建器的常见JavaFX习惯用法 。
此应用程序的实际用途是快速轻松地确定由
SimpleDateFormat
为给定模式提供的表示形式。
参考:来自JCG合作伙伴 Dustin Marx 的基于JavaFX的SimpleDateFormat演示器,来自Inspired by Actual Events博客。
翻译自: https://www.javacodegeeks.com/2012/05/javafx-based-simpledateformat.html
基于javafx的五子棋