JavaFX实例:简单⽇历的实现
java的ui库分为三代,第⼀代是awt,第⼆代是swing,第三代就是javafx了,互相之间是替代关系。桌⾯开发现在⼀般⽤swing和javafx,今天⽤javafx开发⼀个简单的⽇历查询应⽤。
最终效果如下:
git地址:
javafx开发
javafx开发界⾯开发有两种⽅式:
1.通过Java代码来编写。
所有的界⾯和逻辑都通过Java代码来实现,写的东西⽐较多。
2.通过JavaFX Scene Builder + Java代码来编写实现。
JavaFX Scene Builder是⼀种可视化设计⼯具,它允许通过拖放快速创建应⽤程序界⾯。 并且代码创建为XML格式的⽂件。通过JavaFX Scene Builder拖拽来开发界⾯,Java来实现逻辑⽐较简单快速。
下⾯的实例是通过JavaFX Scene Builder + Java实现的。
下载JavaFX Scene Builder
官⽹下载:
创建项⽬
idea新建项⽬选择Java Fx。
javaswing和javafx(注意:尽量使⽤jdk8及8以上,jdk8以下是没有⾃带javafx的,需要⾃⼰引⼊jar包,⾃⾏百度)
建完后的结构如下,Main程序的⼊⼝,sample.fxml⽤于JavaFX Scene Builder拖拽⽣成界⾯,Controller⽤于绑定界⾯和和处理监听事件:
选择sample.fxml右键open in sceneBuilder,然后选择
然后选择安装好的JavaFX Scene Builder
界⾯设计
从左上⾓选择相应的组件到中间进⾏布局,如图我选择了7个组件,左边是选择的所有组件信息。在中间选择任意⼀个组件右边都有组件的具体设置,⽐如长度、宽度、输⼊框默认提⽰,组件的名称等。
设置组件的名称,后⾯Java⾥会⽤到:
保存后sample.fxml内容变成如下:
要⼿动加上 fx:controller="sample.Controller"将sample.fxml⽂件和Controller⽂件关联绑定,这样下⾯写Java代码才能使⽤fxml⾥的东西。
<?xml version="1.0" encoding="UTF-8"?>
<?import *?>
<?import l.*?>
<?import javafx.scene.layout.*?>
<AnchorPane maxHeight="-Infinity"maxWidth="-Infinity"minHeight="-Infinity"minWidth="-Infinity"prefHeight="399.0"prefWidth="627.0"xmlns="javaf x/javafx/8"fx="javafx/fxml/1"controller="sample.Controller">
<children>
<Button id="id_1"layoutX="103.0"layoutY="120.0"mnemonicParsing="false"onAction="#buttonAction1"prefHeight="30.0"prefWidth="119.0"text="获取⽇历"textFill="#3a6f2e"/>
<TextField id="text_1"layoutX="102.0"layoutY="61.0"promptText="请输⼊年份,如:2021"/>
<TextField id="text_2"layoutX="380.0"layoutY="61.0"promptText="请输⼊⽉份,如:2"/>
<Text layoutX="48.0"layoutY="82.0"strokeType="OUTSIDE"strokeWidth="0.0"text="年:"wrappingWidth="35.0"/>
<Text layoutX="332.0"layoutY="82.0"strokeType="OUTSIDE"strokeWidth="0.0"text="⽉:"wrappingWidth="35.0"/>
<TextArea id="text_3"layoutX="167.0"layoutY="197.0"prefHeight="146.0"prefWidth="274.0"/>
</children>
</AnchorPane>
代码:
Controller:
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import l.Button;
import l.TextArea;
import l.TextField;
import java.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable {
@FXML
private Button id_1;
@FXML
private TextField text_1;//从fxml获取组件text_1,⽤于读取年
@FXML
private TextField text_2;//从fxml获取组件text_2,⽤于读取⽉
@FXML
private TextArea text_3;//从fxml获取组件text_3,⽤于输出
@Override
public void initialize(URL location, ResourceBundle resources)
{}
//点击按钮时触发的事件
public void buttonAction1(ActionEvent actionEvent)
{
String year = Text();//获取⽂本框输⼊的内容
String month = Text();//获取⽂本框输⼊的内容
String result=Service.calculationDate(year,month);
text_3.setText(result);
}
}
service:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。