JavaFX学习和开发

本着为老板赚跑车豪宅的原则,我们程序员需要啥就学啥,最近要把一个delphi旧项目重构成一个跨平台的项目,由于队伍里都是java程序员,技术选型上采用了JavaFX,不用swing的原因很简单,javaFx能跟boot联动。

1.创建项目

javaFx没什么好安装,我这里用的是java8,但是想创建javaFx项目得有java11,所有idea内置先下载下,再进行创建。
在这里插入图片描述
在这里插入图片描述

2.了解项目结构

在这里插入图片描述
在这里插入图片描述

3.修改java版本

我这里启动会报错,因为我电脑的环境变量java版本是8,所以我得修改项目的java版本。
在这里插入图片描述
这里要做四个步骤:
①project structure->project选择jdk8
在这里插入图片描述
②修改project structure->modules->languagelevel选择jdk8
在这里插入图片描述
③修改idea的settings->java compiler选择8
在这里插入图片描述
④删除文件(java8开发jfk不需要这个文件)
在这里插入图片描述
最后直接运行
在这里插入图片描述

3.使用介绍

3.1fxml

前端文件就像html可以自己写,也可以安装个Scene Builder自己拖控件。
在这里插入图片描述

onAction:表示事件
fx:controller="xxx":后端对应的文件

在这里插入图片描述

3.2controller

后端controller里面用到了@FXML:说明该变量或者方法可以在FXML文件中进行访问,就是表示这个变量和前端的文件是有关联,前提是这是了id

fx:id="welcomeText"

@FXML
private Label welcomeText;

在这里插入图片描述
在这里插入图片描述

4.样式介绍

4.1TableView

表格样式,先展示下简单效果,然后再来介绍使用。
在这里插入图片描述
接下来上代码,比较麻烦填充的时候是根据列来的。

//先定义表格和列元素
@FXML
/* 表格 */
private TableView<UserInfo> userInfoTableView;
/*【姓名列】*/
@FXML
private TableColumn<UserInfo, String> nameColumn;

/*【性别列】*/
@FXML
private TableColumn<UserInfo, String> sexColumn;

/*【年龄列】*/
@FXML
private TableColumn<UserInfo, String> ageColumn;

/*【爱好列】*/
@FXML
private TableColumn<UserInfo, String> hobbyColumn;
//每一行的记录,我这里直接构造了一个,一般情况读数据库吧
List<UserInfo> UserInfoList = new ArrayList<>(16);
UserInfo userInfo = new UserInfo ();
userInfo.setName("卢本伟");
userInfo.setSex("女");
userInfo.setAge("55");
userInfo.setHobby("pdd");
UserInfoList.add(userInfo);
//这里我封装了一个方法以便反复使用
fillCaseTable(UserInfoList);
/**
 * 表格填充方法
*/
private void fillCaseTable(List<UserInfo> userInfoList) {
    
    
	/*设置数据源*/
	ObservableList<UserInfo> userListData = FXCollections.observableArrayList();
	for (UserInfo info:userInfoList
	) {
    
    
		userListData.add(info);
	}
	//这里nameColumn等都是组件的id,“name”是对象的属性
	nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
	sexColumn.setCellValueFactory(new PropertyValueFactory<>("sex"));
	ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));
	hobbyColumn.setCellValueFactory(new PropertyValueFactory<>("hobby"));
	userInfoTableView.setItems(userListData);
	log.info("设置完毕表格");
    }

4.1.1序号列

在这里插入图片描述
增加序号列,可以给每个表格的每一行前面多个序号,这边的话我只上核心代码,其他都是前端构建的。countColumn就是我的其中一个表头。

countColumn.setCellFactory((col) -> {
    
    
	TableCell<CaseInfo, String> cell = new TableCell<CaseInfo, String>() {
    
    
    	@Override
    	protected void updateItem(String item, boolean empty) {
    
    
    		super.updateItem(item, empty);
    		//如果此列为空默认不添加元素
    		setText(null);
    		setGraphic(null);
    		if (!empty) {
    
    
    			this.setText(String.valueOf(this.getIndex() + 1));
			}
		}
	};
	return cell;
});

4.1.2表格样式设置

java编码修改

//表格内字体大小设置
testTableView.setStyle("-fx-font-size: 15px");

css样式

/*表头大小设置*/
.table-view .column-header .label{
    
    
    -fx-font-size: large;
}

4.1fxml

猜你喜欢

转载自blog.csdn.net/weixin_43487532/article/details/127526107