Java教程 第91页

JavaFX触摸事件-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX触摸事件

JavaFX教程 – JavaFX触摸事件 触摸事件允许我们使用触摸屏与JavaFX应用程序交互。 import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.input.TouchEvent; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; //from w w w . j a va 2s . c o m public class Main extends Application { int touchId = -1; double touchx, touchy; public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 250); final Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); root.getChildren().add(rect); rect.setOnTouchPressed(new EventHandler<TouchEvent>() { @Override public void handle(TouchEvent event) { if (touchId == -1) { touchId = event.getTouchPoint().getId(); touchx = event.getTouchPoint().getSceneX() - rect.getTranslateX(); touchy = event.getTouchPoint().getSceneY() - rect.getTranslateY(); } event.consume(); } }); rect.setOnTouchReleased(new EventHandler<TouchEvent>() { @Override public void handle(TouchEvent event) { if...

JavaFX拖放-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX拖放

JavaFX教程 – JavaFX拖放 例子 /*//from ww w. jav a2 s.c o m * Copyright (c) 2011, Pro JavaFX Authors * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of JFXtras nor the names of its contributors may be used * to endorse or...

JavaFX环境设置-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX环境设置

JavaFX教程 – JavaFX环境设置 要开始使用JavaFX 8,我们需要设置我们的开发环境来编译和运行JavaFX示例。 在下面我们将学习如何安装所需的软件,例如Java开发工具包(JDK)。 安装所需的软件后,我们将创建一个JavaFX“Hello World”示例。 安装Java开发工具包(JDK) 以下步骤说明如何下载和安装Java Development Kit(JDK)。 从以下URL获取JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html 从页面下载JDK为您自己的操作系统。 安装Java 8 JDK。 启动二进制可执行文件。这是在Windows平台上通常会收到的安全警告。 选择JDK安装目录 更改JDK安装目录 安装文件夹已更改。 复制文件的进度条 安装JRE 完成安装 设置环境变量 要设置的两个变量是: JAVA_HOME: sets the Java installation directory. PATH: sets the Java executable directory. Java可执行文件位于 JAVA_HOME 主目录下的bin目录中。 以下是在Windows中设置的变量: set JAVA_HOME="C:\jdk1.8.0" set PATH=%JAVA_HOME%\bin;%PATH% JAVA_HOME值是我们在安装JDK时选择的值。 在基于Unix的平台(如Mac OS X和Linux)上,设置取决于您使用的shell。 以下示例显示如何设置所需的变量Bash和Bourne shell: # bash, bourne shell environments export JAVA_HOME=/usr/java/jdk1.8.0 export PATH=$PATH:$JAVA_HOME/bin 以下示例显示如何设置所需的变量CSH壳: #csh environments setenv JAVA_HOME /usr/java/jdk1.8.0 setenv PATH ${JAVA_HOME}/bin:${PATH} 这些语句将设置环境变量为当前终端窗口会话。 要使JAVA_HOME和PATH永久,请将它们添加到系统登录以便在启动或登录时始终可用。 在Windows环境中,我们可以使用键盘快捷方式 Windows徽标键+暂停/ Break键,然后单击高级系统设置以显示系统属性对话框。 接下来,单击环境变量。然后使用安装的主目录作为值添加或编辑JAVA_HOME环境变量。 要为Mac OS X平台设置 JAVA_HOME 启动终端窗口以编辑主目录的.bash_profile文件(名为〜/ .bash_profile),通过添加前面显示的导出命令。 在Linux上比使用Bash shell环境启动终端窗口并编辑〜/ .bashrc或〜/ .profile文件以包含导出命令。 在使用C shell(csh)环境的Linux上,启动终端窗口并编辑〜/ .cshrc或〜/ .login文件以包含setenv命令。 一旦设置了路径和JAVA_HOME环境变量,就通过验证启动终端窗口并执行以下两个命令从命令提示符: java -version 要么 javac -version 安装Eclipse IDE 从以下URL下载Eclipse: https://Eclipse.org 通过启动二进制可执行文件来安装Eclipse。 提取进度 解压缩文件夹 Exe运行警告 飞溅屏幕 选择工作区 Eclipse窗口 新Java项目 JavaProject对话框 新的Java类 新类对话框 编辑新类

JavaFX包

JavaFX教程 – JavaFX包 要分发或部署JavaFX应用程序,我们需要打包JavaFX应用程序类。 要处理应用程序打包和部署,我们可以使用JavaFX Packager工具来构建,打包和部署应用程序。 以下步骤显示如何使用JavaFX Packager工具。 转到源文件夹如下 cd com/w3cschool 编译源文件 javac -d . HelloWorldMain.java 运行javafxpackager命令 javafxpackager -createjar -appclass com.w3cschool.HelloWorldMain -srcdir . -outdir out -outfile helloworld.jar -v -createjar creates a JavaFX JAR executable application. -appclass com.w3cschool.HelloWorldMain specifies the fully qualified name of the class containing the main() method. -srcdir . sets the top-level location of the parent directory holding the compiled classes (current directory). -outdir out sets the destination where the packaged jar file will be created. -outfile helloworld.jar specifies the name of the executable jar file. -v allows verbose displays logging information when executing javafxpackager. 要在命令行上运行jar可执行文件,请键入以下内容并按Enter键: javaw -jar out/helloworld.jar

JavaFX Hello World-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX Hello World

JavaFX教程 – JavaFX Hello World 以下代码显示了如何在JavaFX中创建一个窗口并添加一个按钮控制到它。 它还显示如何处理按钮的点击事件。 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; //w w w.j ava 2s . c o m public class Main extends Application { @Override public void start(Stage primaryStage) { Button btn = new Button(); btn.setText("Say "Hello World""); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 上面的代码生成以下结果。 注意 JavaFX应用程序的Main类扩展了 javafx.application.Application 类。 start()方法是所有JavaFX应用程序的主要入口点。 javafx.application.Application类提供应用程序生命周期功能,如在运行时初始化,启动,启动和停止。 应用程序类为Java应用程序启动与主线程分离的JavaFX GUI组件提供了一种方法。 main()方法通过传入JavaFX应用程序Application.launch()方法的命令行参数。 访问传递到 launch()方法中的任何参数我们可以调用Application类的getParameters()方法。 执行 Application.launch()方法后,JavaFX应用程序将进入就绪状态,并且框架内部调用start()方法来启动。 调用 start()方法后,该程序在JavaFX线程中运行,而不是在主线程上运行一个JavaFX javafx.stage.Stage 对象是可供开发人员使用。 以下代码显示了覆盖的应用程序start()方法: @Override public void start(Stage primaryStage) {...} JavaFX场景图 JavaFX应用程序通过阶段和场景来定义用户界面容器。 JavaFX Stage 类是顶层JavaFX容器。JavaFX...

JavaFX VBox-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX VBox

JavaFX教程 – JavaFX VBox VBox布局将子节点堆叠在垂直列中。 新添加的孩子被放置在上一个子节点的下面。 默认情况下,VBox尊重孩子的首选宽度和高度。 当父节点不可调整大小时,例如Group节点,最大垂直列的宽度基于具有最大优选宽度的节点。 默认情况下,每个子节点与左上(Pos.TOP_LEFT)位置对齐。 例子 以下代码将TextArea控件设置为在调整父VBox的高度时垂直增长: TextArea myTextArea = new TextArea(); VBox.setHgrow(myTextArea, Priority.ALWAYS); import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TextArea; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { TextArea myTextArea = new TextArea(); VBox hbox = new VBox(); hbox.getChildren().add(myTextArea); VBox.setVgrow(myTextArea, Priority.ALWAYS); Scene scene = new Scene(hbox, 320, 112, Color.rgb(0, 0, 0, 0)); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 上面的代码生成以下结果。 实施例2 下面的代码使用四个矩形来演示VBox的使用。 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; /*from ww w .jav a 2 s .c om*/ public class Main extends Application { @Override public void start(Stage primaryStage) {...

JavaFX HBox-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX HBox

JavaFX教程 – JavaFX HBox JavaFX API具有将UI控件显示到场景图上的布局类。 HBox布局类将JavaFX子节点放在水平行中。新的子节点附加到右侧的末尾。 默认情况下,HBox布局尊重孩子的首选宽度和高度。 当父节点不可调整大小时,例如Group节点,HBox的行高度被设置为子节点的最大优选高度。 默认情况下,每个子节点与左上(Pos.TOP_LEFT)位置对齐。 我们可以编程改变HBox的布局约束,例如边框,填充,边距,间距和对齐。 当处理不可缩放的子节点(例如Shape节点)时,父节点考虑了Shape的矩形边界(ParentInBounds),它的宽度和高度。 当处理可调整大小的节点(如TextField控件)时,父节点计算TextField水平增长的可用空间。 要在HBox中水平生长UI控件,请使用静态HBox.setHgrow()方法。 例子 以下代码将TextField控件设置为在调整父HBox的宽度时水平增长: TextField myTextField = new TextField(); HBox.setHgrow(myTextField, Priority.ALWAYS); 完整的源代码。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.paint.Color; import javafx.stage.Stage; /*from w w w. j a v a 2s . c o m*/ public class Main extends Application { @Override public void start(Stage primaryStage) { TextField myTextField = new TextField(); HBox hbox = new HBox(); hbox.getChildren().add(myTextField); HBox.setHgrow(myTextField, Priority.ALWAYS); Scene scene = new Scene(hbox, 320, 112, Color.rgb(0, 0, 0, 0)); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 上面的代码生成以下结果。 实施例2 下面的代码为HBox添加了四个矩形,设置了HBox约束并展示了HBox布局控件的许多间距属性。 矩形节点不可调整大小。 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.layout.HBox; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; // ww w....

JavaFX FlowPane-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX FlowPane

JavaFX教程 – JavaFX FlowPane FlowPane根据可用的水平间距布置一行中的节点当水平空间小于所有节点“宽度”的总和时,将节点包裹到下一行。 默认情况下,FlowPane布局从左到右流动子节点(Pos.TOP_LEFT)。 要更改流向对齐,请调用 setAlignment()方法通过传递类型 Pos 的枚举值。 以下代码创建一个FlowPane布局,以从右到左(Pos.TOP_RIGHT)流动子节点。 FlowPane flowPane = new FlowPane(); flowPane.setAlignment(Pos.TOP_RIGHT); flowPane.getChildren().addAll(...); // child nodes to add. 例子 向流窗格添加按钮 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; /*from w w w .ja va2 s . c o m*/ public class Main extends Application { @Override public void start(Stage stage) { stage.setTitle("HTML"); stage.setWidth(500); stage.setHeight(500); Scene scene = new Scene(new Group()); FlowPane flow = new FlowPane(); flow.setVgap(8); flow.setHgap(4); flow.setPrefWrapLength(300); // preferred width = 300 for (int i = 0; i < 10; i++) { flow.getChildren().add(new Button("asdf")); } scene.setRoot(flow); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } 上面的代码生成以下结果。 实施例2 FlowPane首选宽度允许两列 import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import...

JavaFX BorderPane-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX BorderPane

JavaFX教程 – JavaFX BorderPane BorderPane布局顶,底,左,右或中心区域中的子节点。每个区域只能有一个节点。 BorderPane的顶部和底部区域允许可调整大小的节点占用所有可用宽度。 左边界区域和右边界区域占据顶部和底部边界之间的可用垂直空间。 默认情况下,所有边界区域尊重孩子们的首选宽度和高度。 放置在顶部,底部,左,右和中心区域中的节点的默认对齐方式如下: Top: Pos.TOP_LEFT Bottom: Pos.BOTTOM_LEFT Left: Pos.TOP_LEFT Right: Pos.TOP_RIGHT Center: Pos.CENTER 例子 将按钮添加到BorderPane import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; /*from w ww .ja va2 s . com*/ public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("BorderPane Test"); BorderPane bp = new BorderPane(); bp.setPadding(new Insets(10, 20, 10, 20)); Button btnTop = new Button("Top"); bp.setTop(btnTop); Button btnLeft = new Button("Left"); bp.setLeft(btnLeft); Button btnCenter = new Button("Center"); bp.setCenter(btnCenter); Button btnRight = new Button("Right"); bp.setRight(btnRight); Button btnBottom = new Button("Bottom"); bp.setBottom(btnBottom); Scene scene = new Scene(bp, 300, 200); primaryStage.setScene(scene); primaryStage.show(); } } 上面的代码生成以下结果。 实施例2 将BorderPane宽度和高度与场景绑定 import javafx.application.Application; import...

JavaFX GridPane-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JavaFX GridPane

JavaFX教程 – JavaFX GridPane GridPane通常用于布局输入表单第一列上的只读标签和第二列上的输入字段。 GridPane可以在行,列或单元格级别指定约束。 例如,我们可以设置包含输入文本字段的第二列,以在窗口调整大小时调整大小。 例子 以下代码演示使用GridPane布局的简单表单应用程序。它有以下布局。 +------------------------+ | [label ] [ field ] | | [label ] [ field ] | | [ button ] | +------------------------+ 源代码。 import javafx.application.Application; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.BorderPane; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.scene.layout.Priority; import javafx.scene.paint.Color; import javafx.stage.Stage; //www . ja v a 2 s . c om public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { BorderPane root = new BorderPane(); Scene scene = new Scene(root, 380, 150, Color.WHITE); GridPane gridpane = new GridPane(); gridpane.setPadding(new Insets(5)); gridpane.setHgap(5); gridpane.setVgap(5); ColumnConstraints column1 = new ColumnConstraints(100); ColumnConstraints column2 = new ColumnConstraints(50, 150,...