在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序。 (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章《 安装JavaFX 2.0和NetBeans 7.7.1》 )单击“文件”菜单中的“新建项目”以打开项目向导。 然后选择“ JavaFX-> JavaFX Application”,然后按“ Next”。



在下一个对话框中,您可以指定应用程序的名称和目标文件夹,该文件夹应存储在该文件夹中。 如果您已正确安装JavaFX,则应已指定“ JavaFX Platform”。 否则,您可以通过单击“管理平台->添加平台”并指定JavaFX安装的路径来自己添加平台。





注意:默认情况下,“创建应用程序类”复选框处于选中状态。 请取消选中它,因为我们将创建自己的应用程序类。
单击“完成”以创建您的第一个JavaFX应用程序。

JavaFX 2.0中的Hello World –示例1

大概每个软件开发人员都知道著名的“ HelloWorld”示例,因为该示例通常用于显示(未知)编程语言的语法并给出语言的初步线索。 我不想破坏这一传统,因此这里有JavaFX 2.0中HelloWorld程序的2个不同版本。 我将首先显示完整的代码,然后说明各个部分。

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;

/**
 * 
 * Created on: 17.03.2012
 * @author Sebastian Damm
 */
public class HelloJavaFX extends Application
{
    @Override
    public void start(Stage stage) throws Exception
    {        
        Button bt = new Button('Print HelloWorld');
        bt.setOnAction(new EventHandler<ActionEvent>() 
        {
            @Override
            public void handle(ActionEvent arg0)
            {
                System.out.println('HelloWorld! :)');
            }
        });
        
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 300, 150);
        root.getChildren().add(bt);

        stage.setTitle('HelloWorld in JavaFX 2.0');
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args)
    {
        Application.launch(args);
    }
}

值得一提的第一件事是,您必须从Application类进行扩展才能创建一个有效的JavaFX应用程序。 此类提供了几种实时循环方法,并且是您应用程序的起点。 它是一个抽象类(意味着您无法实例化它),它具有一个必须覆盖的抽象方法start 。 JavaFX运行时为您提供了一个stage对象,您可以使用该对象来显示您的UI。

要启动您的应用程序,您必须调用静态方法launch如本示例中的main方法所示。 启动应用程序后,它将调用start方法。 这是Application类的JavaDoc,它显示了启动JavaFX应用程序时的各个步骤。 JavaFX应用程序的入口点是Application类。 每当启动应用程序时,JavaFX运行时就会依次执行以下操作:构造指定的Application类的实例

  • 调用init()方法
  • 调用start(javafx.stage.Stage)方法
  • 等待应用程序完成,这可能在关闭最后一个窗口或应用程序调用Platform.exit()时发生
  • 调用stop()方法

让我们start方法中的真实源代码start
首先,我们创建一个简单的Button并指定一个通过setOnAction方法单击按钮时要触发的动作(比较JButton的addActionListener )。
接下来,我们创建一个StackPane对象,该对象是JavaFX中的布局窗格之一(下一篇博客文章将介绍JavaFX中的所有不同布局窗格)。 我在这里使用StackPane ,因为它会自动占用其周围父级提供的所有可用空间,并且会自动将其子级内部居中。

注意: JavaFX应用程序的基础是Scene graph 。 每个Node (包括简单的控件,组和布局窗格)都是节点的分层树的一部分,该树称为“ Scene graphScene graph以及整个JavaFX应用程序始终只有一个根节点!

如上所述, start方法具有一个Stage对象参数,该参数由JavaFX运行时提供。 此Stage对象是一种窗口。 您必须为其提供一个Scene对象作为其可见内容。 您可以通过传递应用程序的根节点来创建一个Scene对象。 可选参数包括场景的宽度和高度以及Paint对象,其中包括简单的颜色以及复杂的颜色渐变。
使用root.getChildren().add(bt); 您将按钮添加到您的根节点,这是一个堆栈窗格。 之后,我们为stage设置标题并应用创建的scene对象。 最后使用show方法,我们告诉stage进行展示。 (比较Swing的setVisible

现在,您的应用程序应如下所示:





如果您单击按钮,它将在命令行上打印“ HelloWorld”。 没什么特别的,但是这是您第一个可以使用的JavaFX应用程序,恭喜! :)

JavaFX 2.0中的Hello World –示例2

Additionally a slightly changed example, which will show the text in the GUI.
The code:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.DropShadow;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * 
 * Created on: 17.03.2012
 * @author Sebastian Damm
 */
public class HelloJavaFX2 extends Application
{
    @Override
    public void start(Stage stage) throws Exception
    {
        final Group root = new Group();
        Scene scene = new Scene(root, 500, 200, Color.DODGERBLUE);
        
        final Text text = new Text(140, 120, 'Hello JavaFX 2.0!');
        text.setFont(Font.font('Calibri', 35));
        text.setFill(Color.WHITE);
        text.setEffect(new DropShadow());        
        
        Button bt = new Button('Show HelloWorld');     
        bt.setLayoutX(180);
        bt.setLayoutY(50);
        bt.setOnAction(new EventHandler<ActionEvent>() 
        {
            @Override
            public void handle(ActionEvent arg0)
            {
                root.getChildren().add(text);
            }
        });

        root.getChildren().add(bt);
        
        stage.setTitle('HelloWorld in JavaFX 2.0');
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args)
    {
        Application.launch(args);
    }
}

我们在这里使用Group对象,而不是使用布局窗格。 GroupParent的子类(是Node的子类),并接收一个或多个子代。 Group直接调整大小,您可以向Group添加变换或效果,这将影响Group所有子级。 (请注意,我们现在还提供了“ Scene Paint Scene 。)
接下来,我们创建一个Text对象。 因为没有布局窗格,所以我们直接指定x和y坐标。 我们指定一种自定义字体,将颜色更改为白色,然后添加一个DropShadowButton还获得坐标,并且当我们单击按钮时,而不是在命令行上打印“ HelloWorld”,而是将创建的Text对象添加到我们的根元素(并因此添加到Scene Graph )。 单击按钮后,您的应用程序应如下所示。





摘要:

  • JavaFX Stage对象是一种窗口,其行为类似于Swing中的JFrameJDialog
  • JavaFX Scene对象是Stage的可见内容,并且具有单个Parent根节点。
  • Node是JavaFX中最重要的类之一。 每个控件或布局窗格都是一种节点。
  • Scene Graph是节点的分层树。 它只有一个根节点,是您应用程序的基础。 它必须传递给一个Scene对象
  • 扩展Application





https://www.javacodegeeks.com/2012/06/javafx-20-hello-world.html