点到hello-view.fxml,点到下面的Scene Builder,如图:
系统自动创建的是一个VBox,上面创建了一个标签和一个按钮。我不习惯使用VBox,我来把它删除掉,重新添加“Borderpane”,然后我们在“Borderpane”的顶部添加一个pane,在pane里面添加两个按钮(pane里面的控件可以自由拖放位置,这个我很喜欢)。如图:
然后我们准备给按钮写个单击事件,用来打开一个文件对话框,选择excel文件然后读取它。于是我们找到右下角“code”发现里面确实有很多事件,我以为双击能自动转到代码页并写代码,其实不能。正确的办法是,是在某个事件,比如我选择"on mouse clickd"里面写上“openclick1”,表示 我们这个事件的函数名称叫“openclick1”。我们点“hello-view.fxml”的“文本”可以看到事件已经在里面了:
但是它是红色的,标示我们还没有在代码里写这个函数。fxml它就是一个布局的文件,我们还得写这个文件的代码文件。我们在BorderPane定义的第一行,找到最后一个>之前按回车,在>里面写上:fx:controller="com.example.demo.HelloController">,表示我们这个布局文件的代码文件是“HelloController”,如图:
现在我们到HelloController里面去把“openclick1”写上代码:
package com.example.demo;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import java.io.File;
public class HelloController {
@FXML
private Label welcomeText;
@FXML
protected void openclick1()
{
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("文件打开对话框");
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("电子表格", "*.xlsx", "*.xls", "*.ods", "*.txt", "*.csv"));
// 设置文件选择框的初始目录(可选)
//fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
// 显示文件选择框并获取所选文件
File selectedFile = fileChooser.showOpenDialog(new Stage());
if (selectedFile != null)
{
String fileName = selectedFile.getName();
Platform.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("选择文件");
alert.setHeaderText(null);
alert.setContentText("您选择了文件:" +fileName);
alert.showAndWait();
});
}
}
}
我们运行,选中某个文件就会出现结果了: