JavaFx初学小记(一)

折腾了一小会,基本上实现了JavaFx的核心逻辑。

Javafx的界面包含:Scene(场景)、Stage(舞台)、Pane(面板)、其他的例如一些控件。

按照从大到小顺序是

Stage->Scene->Pane->Control(组件)

组件依赖Controller实现事件的触发。

其实在Eclipse会自动帮我们新建JavaFx的项目,包括GUI设计我们也是直接使用JavaFx Scene Builder来进行设计导出fxml,实现所见即所得。

创建好的JavaFX空模板应该如下:

package application;
	
import java.net.URL;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Parent;
import javafx.fxml.FXMLLoader;
import javafx.fxml.JavaFXBuilderFactory;

public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			URL location = getClass().getResource("test.fxml");
			FXMLLoader fxml = new FXMLLoader();
			fxml.setLocation(location);
			fxml.setBuilderFactory(new JavaFXBuilderFactory());
			Parent root = fxml.load();
			Scene scene = new Scene(root,400,400);
			primaryStage.setScene(scene);
			Controller controller=fxml.getController();
			controller.init();
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

JavaFx Scene Builder产生的格式为fxml格式,因此需要引入FXMLLoader来进行资源的加载。这里我们不直接调用类,而是创建一个新对象,来加载fxml界面布局。

注意,Eclipse默认编译到bin位置后获取的location其实是bin目录,所以fxml需要新建到bin目录,否则会报错。如果不清楚的话,可以自己打印一条空路径(getClass().getResource(""))确认当前项目的目录。

下面是Controller的代码。

package application;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;

public class Controller extends Main {
	@FXML
	private Button testBtn;
	@FXML
	private void onButton1Open (MouseEvent event) {
		Alert alert=new Alert(Alert.AlertType.INFORMATION);
		alert.setTitle("这是一个信息框");
		alert.setContentText("这是显示的文本");
		alert.show();
	}


}

onButton1Open是我在JSB中为testBtn定义的一个MouseEvent,点击后会弹出一个信息框。

 

踩的坑:

1.location位置不对

2.使用了fx:root来填充controller class,导致编译报错

总体而言JavaFx还是很容易上手的,而且组件非常多,即使是对于像我这样不太用Java的人来说(相当容易),基本上二十分钟左右就可以比较熟悉它的工作模式了。

网上应该也有一整套的例程,可以根据代码来进行学习。

JDK11以上版本需要再次安装一下JavaFx.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值