JavaFx初入门:从hello world做起

时间:2021-12-06 14:29:58

按照现在搜索情况,网络上关于JavaFx的教程少的一比,而且大部分还他喵的是英文版的,我现在也是只能边学边写感悟。如果有不全错误的地方还请大家见谅。

首先是对JavaFX的介绍,javaFx是一个非常强大的图形和多媒体处理工具包集合, 同时能够跨平台使用。通俗点来说就是JavaFx就是用来写客户端的,并且和Java的特性一样,一次编译到处乱窜。这里使用的是jdk1,8版本的。

Javafx有两种写法:一种是使用fxml文件,将事件和对场景描述分开,好处明显的自然而然:将逻辑功能和界面分开,使程序更加的清晰,但是最后连接的时候容易出问题。今天写的是另外一种方法:将界面和事件写到一块,虽然看起来很麻烦,但是不容易出问题。只是写完之后的代码麻烦到连你自己都不愿意看。

这里的javafx主要是继承了application这个类,是以Stage作为基石,即有舞台的意思,所有的功能都会在这个舞台上展现出来。现在先拿一串最简单的代码进行分析。

package application.fx17823;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class FxTest1 extends Application {

	@Override
	public void start(Stage primaryStage) throws Exception {
		// TODO Auto-generated method stub
		Button button = new Button();               //创建按钮
		button.setText("Say'Hello World!!!'");		//给按钮命名
		button.setOnAction(new EventHandler<ActionEvent>() {        //给按钮连接事件  注意写法(重点)
			
			@Override
			public void handle(ActionEvent event) {
				// TODO Auto-generated method stub
				System.out.println("我就不说hello world!");
			}
		});
		
		StackPane root = new StackPane();	//堆栈面板布局  注意stackPane
		root.getChildren().add(button);		//把按钮加在面板上
		Scene scene = new Scene(root,300,250);	//设定大小
		
		primaryStage.setTitle("你好");		//设定展示的场景舞台
		primaryStage.setScene(scene);		//设定场景的大小
		primaryStage.show();			//舞台展示
	}
	public static void main(String[] args){
		launch(args);
	}

}

JavaFx应用程序主要继承的是application.Application类,其中所对应的Start方法是所有JavaFx程序的入口。

Java Fx的应用程序将UI容器定义为舞台(Stage)和场景(Scene),stage是JavaFx*的容器,scene是所有内容的容器。所以最后scene还得放在stage里

在JavaFX中,Scene中的内容会以由图形节点(Node)构成的分层场景图(Scene Graph)来展现。在本例中,root节点是一个StackPane对象,它是一个可以调整大小的layout节点。这就意味着在用户改变stage大小时,root节点可以随scene的大小变化而变化。

当JavaFX应用程序是通过JavaFX Packager工具打包时,main()方法就不是必需的的了,因为JavaFX Package工具会将JavaFX Launcher嵌入到JAR文件中。但是保留main()方法还是很有用的,这样你可以运行不带有JavaFX Launcher的JAR文件,例如在使用某些没有将JavaFX工具完全集成进去的IDE时。另外嵌入了JavaFX代码的Swing应用程序仍需要main()方法。意思就是在eclipse里还得把launch给写上用来运行,如果是一切都包装好了,就不用写了。

root节点包含一个带文本的按钮子节点,按钮上添加了一个事件处理器(Event Handler),它在点击按钮时会向控制台输出信息。

运转效果如下图所示:

JavaFx初入门:从hello world做起

JavaFx初入门:从hello world做起

JavaFx初入门:从hello world做起

JavaFx初入门:从hello world做起