JavaFX 2.0 Hello World

在讨论示例本身之前,我想向您展示如何在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
{@Overridepublic void start(Stage stage) throws Exception{        Button bt = new Button('Print HelloWorld');bt.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic 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
{@Overridepublic 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>() {@Overridepublic 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对象
  • 为了创建和启动JavaFX应用程序,您必须完成以下步骤:
    • 扩展Application

参考: JavaFX 2.0中的Hello World,来自我们的JCG合作伙伴 Sebastian Damm,作者关于Java博客的Just my 2 cents 。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 线程强制停止线程_java多线程之停止线程

在多线程开发中停止线程是非常重要的技术点。停止线程在Java语言中并不像break语句那样干脆。须要一些技巧性的处理。一、 异常法採用异常法来停止一个线程。首先我们须要了解一下两个方法的使用方法&#xff1a;1、interrupt()方法public class MyThread extends Thread{Over…

Android 上下文菜单(Context Menu)

一、概述 Android中&#xff0c;上下文菜单是通过onLongClick(...)事件访问的。在事件触发后显示菜单项。 在使用上下文菜单时&#xff0c;通常在onCreate(...)方法中&#xff0c;先行注册上下文菜单。在实现onCreateContextMenu(...)方法和onContextItemSelected(...)方法。 注…

RGB颜色空间alpha混合的方法

http://blog.csdn.net/xhhjin/article/details/6444782http://blog.csdn.net/xhhjin/article/details/6445460http://www.cnblogs.com/graphics/archive/2012/08/23/2643086.htmlhttp://www.oschina.net/code/snippet_1425046_27446 转载于:https://www.cnblogs.com/eustoma/p/…

Java怪异实践

总览 Java中有许多实践使我感到困惑。 这里只是一些。 使用-Xmx和-Xms 选项-Xmx广泛用于设置最大内存大小。 如Java HotSpot VM Options中所述&#xff0c;以-X开头的选项是非标准的&#xff08;不保证在所有VM实现中均受支持&#xff09;&#xff0c;并且在以后的JDK发行版中…

saml java实现_java-saml

软件简介java-saml 是 Java 的 SAML 开发包。Maven&#xff1a;com.oneloginjava-saml2.4.0示例代码&#xff1a;Map samlData new HashMap<>();samlData.put("onelogin.saml2.sp.entityid", "http://localhost:8080/java-saml-tookit-jspsample/metadat…

双系统Ubuntu分区扩容过程记录

本人电脑上安装了Win10 Ubuntu 12.04双系统。前段时间因为在Ubuntu上做项目要安装一个比较大的软件&#xff0c;导致Ubuntu根分区的空间不够了。于是&#xff0c;从硬盘又分出来一部分空间&#xff0c;分给Ubuntu。于是有了这篇Ubuntu扩容过程记录&#xff0c;也可以当作是一篇…

使用MongoDB的MapReduce

MapReduce是Google在2004年推出的一种软件框架&#xff0c;用于支持对计算机集群中的大数据集进行分布式计算。 您可以从此处阅读有关MapReduce的信息 。 MongoDB是用C 编写的面向开源文档的NoSQL数据库系统。 您可以从此处阅读有关MongoDB的更多信息。 1.安装MangoDB。 请遵…

java epson指令集_EPSON机械手 SPEL+语言指令集

下面是全部指令的简明列表&#xff0c;放在这里方便参考。之后重要的指令&#xff0c;勇哥要拿出来单独学习。系统管理相关命令Reset 将控制器重置为初始状态。SysConfig 显示系统设置参数。SysErr 返回最新的错误状态或警告状态。Date 显示日期。Time 显示时间。Date$ 以字符串…

1、关于action中解决跨域请求问题:

&#xff08;1&#xff09;、action中使用ajax传值时HttpServletRequest request ServletActionContext.getRequest(); String origin request.getHeader("Origin"); HttpServletResponse response ServletActionContext.getResponse(); response.setContentType(…

dom contains 包含关系

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>contains</title></head><body> <div id"p-node"> <div id"c-node">子节点内容&…

ANTLR:入门

这篇文章使您了解ANTLR的基础知识。 以前&#xff0c;我们已经了解了如何将ANTLR设置为外部工具。 在这里&#xff1a; ANTLR外部工具 :) 所以&#xff0c;我们开始…。 什么是ANTLR&#xff1f; •另一个语言识别工具&#xff0c;是一种语言工具&#xff0c;它提供了一个框架…

安装JAVA8要登录_JDK8的安装及环境配置

原文链接:https://www.cnblogs.com/chenxj/p/10137221.html1、下载JDK&#xff1b;b、或百度网盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1S14y4_3eN9G6oOVfhmbe_w提取码&#xff1a;0cf62、双击安装程序&#xff0c;点击下一步安装目录若不修改&#xff0c;可直…

【学习笔记】JavaScript基础(一)

【学习过程遇到疑问和延伸阅读】 1.document.write()的深入理解write()方法可向文档写入HTML表达式或JavaScript代码。可使用document.write()向输出流写文本或者HTML 延伸阅读《js中document.write的那点事》http://www.cnblogs.com/dh616854836/articles/2140349.html 2.编程…

js操纵cookie技术

<% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>图片浏览</title> <script typ…

java none怎么用tomcat_使用tomcat做java中间件

tomcat是一个老牌的中间件了&#xff0c;从我从业到现在时不时都会遇到它&#xff0c;方便、灵活、性能一般是我对它的使用经验总结。配置注意 &#xff1a; tomcat 7 和 6 有很大差别&#xff0c;server.xml catalina.sh 配置文件不能通用设置tomcat7 使用jdk1.7export JAVA_H…

早期访问中带有NetBeans的Oracle公共云Java服务

谁期望发生这种情况&#xff1a;Oracle正在开发公共云产品&#xff0c;并且即将开始正式启动的迹象已经出现。 在正式宣布之后将近一年&#xff0c;我被邀请加入所谓的“抢先体验”计划&#xff0c;以试驾新服务并提供反馈。 多亏负责产品的经理Reza Shafii &#xff0c;我才可…

MySQL 分组之后如何统计记录条数 gourp by 之后的 count()

SELECT count(*) FROM 表名 WHERE 条件 // 这样查出来的是总记录条SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数.如何获得 第二个sql语句的总记录条数? 则是&#xff0c;如下&#xff1a;    select count(*) from(SELECT count(*) F…

python CS游戏1--角色创建,武器购买

#codingutf-8 import random 本文字主要目的是随机创建一个角色&#xff0c;并且武器是随机产生的&#xff0c;自带系统给的费用10000,10000元钱可以购买武器&#xff0c;购买武器以后&#xff0c;钱会减少&#xff0c;直到不足提示无法购买 dir{"AK47":2000,"…

App Engine中的Google Services身份验证,第2部分

在本教程的第一部分中&#xff0c; 我描述了如何使用OAuth进行Google API服务的访问/身份验证。 不幸的是&#xff0c;正如我稍后发现的那样&#xff0c;我使用的方法是OAuth 1.0&#xff0c;显然现在Google正式弃用了OAuth 1.0&#xff0c;改用OAuth 2.0版本。 显然&#xff0…

字符串常用操作

1 常用&#xff1a;分割、长度、索引、切片2 r (1,2,3,4,5)#只读列表元组3 name "liangml"4 strip5 username input("user:")6 if username.strip() "liangml":#strip可以将输入前后的空格都换掉7 print("welcome")8 9 split …