JavaFX是一种用于开发跨平台的基于Java的GUI应用程序的技术,它是由Oracle公司开发的。它提供了一个先进的图形用户界面(GUI)框架,使开发人员能够创建功能强大、外观精美的应用程序。
JavaFX在很多地方都有应用。它可以在Windows、Mac OS X和Linux上运行,并且也可以在Android和iOS上运行。此外,它还可以作为Web浏览器中的Java applet来使用。 JavaFX也可以作为一种独立的应用程序来使用,而不需要浏览器或其他软件。
public class HelloWorld extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("Hello World!"); StackPane root = new StackPane(); root.getChildren().add(label); 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有其他内置的形状,如
以下代码显示了如何创建路径。
import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.layout.HBox; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { Scene scene = new Scene(new Group()); stage.setTitle("Checkbox Sample"); stage.setWidth(230); stage.setHeight(120); Path path = new Path(); path.getElements().add(new MoveTo(0.0f, 50.0f)); path.getElements().add(new LineTo(100.0f, 100.0f)); VBox vbox = new VBox(); vbox.getChildren().addAll(path); vbox.setSpacing(5); HBox root = new HBox(); root.getChildren().add(vbox); root.setSpacing(40); root.setPadding(new Insets(20, 10, 10, 20)); ((Group) scene.getRoot()).getChildren().add(root); stage.setScene(scene); stage.show(); } }
路径元素实际上从javafx.scene.shape.PathElement类扩展,它仅在Path对象的上下文中使用。
所以你不能实例化一个LineTo类放在场景图中。具有 To
作为后缀的类是路径元素,而不是Shape节点。
例如,MoveTo和LineTo对象实例是添加到Path对象的Path元素,而不是可以添加到场景的形状。
上面的代码生成以下结果。
以下代码显示了如何向路径添加 QuadCurveTo
。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.QuadCurveTo; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, 300, 150); stage.setScene(scene); stage.setTitle(""); Path path = new Path(); MoveTo moveTo = new MoveTo(); moveTo.setX(0.0f); moveTo.setY(50.0f); QuadCurveTo quadTo = new QuadCurveTo(); quadTo.setControlX(25.0f); quadTo.setControlY(0.0f); quadTo.setX(50.0f); quadTo.setY(50.0f); path.getElements().add(moveTo); path.getElements().add(quadTo); root.getChildren().add(path); scene.setRoot(root); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
使用Path,MoveTo和CubicCurveTo创建曲线
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.CubicCurveTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { stage.setTitle("ComboBoxSample"); Scene scene = new Scene(new Group(), 450, 250); Path path = new Path(); MoveTo moveTo = new MoveTo(); moveTo.setX(0.0f); moveTo.setY(0.0f); CubicCurveTo cubicTo = new CubicCurveTo(); cubicTo.setControlX1(0.0f); cubicTo.setControlY1(0.0f); cubicTo.setControlX2(100.0f); cubicTo.setControlY2(100.0f); cubicTo.setX(100.0f); cubicTo.setY(50.0f); path.getElements().add(moveTo); path.getElements().add(cubicTo); Group root = (Group) scene.getRoot(); root.getChildren().add(path); stage.setScene(scene); stage.show(); } }
上面的代码生成以下结果。
减去两个形状以创建路径
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.DropShadow; import javafx.scene.effect.DropShadowBuilder; import javafx.scene.paint.Color; import javafx.scene.shape.*; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Shapes"); Group root = new Group(); Scene scene = new Scene(root, 300, 300, Color.WHITE); Ellipse bigCircle = EllipseBuilder.create() .centerX(100) .centerY(100) .radiusX(50) .radiusY(75/2) .strokeWidth(3) .stroke(Color.BLACK) .fill(Color.WHITE) .build(); Ellipse smallCircle = EllipseBuilder.create() .centerX(100) .centerY(100) .radiusX(35/2) .radiusY(25/2) .build(); Shape shape = Path.subtract(bigCircle, smallCircle); shape.setStrokeWidth(1); shape.setStroke(Color.BLACK); shape.setFill(Color.rgb(255, 200, 0)); root.getChildren().add(shape); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
使用VLineTo创建垂直线
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.layout.VBox; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.VLineTo; import javafx.stage.Stage; public class Main extends Application { @Override public void start(final Stage stage) { stage.setTitle("HTML"); stage.setWidth(500); stage.setHeight(500); Scene scene = new Scene(new Group()); VBox root = new VBox(); Path path = new Path(); path.getElements().add(new MoveTo(50.0f, 0.0f)); path.getElements().add(new VLineTo(50.0f)); root.getChildren().addAll(path); scene.setRoot(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
JavaFX教程 -JavaFX属性JavaFX属性存储控件的内部状态,并允许我们监听来自JavaFX UI控件的状态更改。JavaFX属性可以彼此绑定。...
JavaFX教程 -JavaFX标签JavaFX API的javafx.scene.control包中的Label类显示一个文本元素。我们可以包装文本元素以适应特定空间...
Java日期时间 -Java年月日年年表示一年,例如2012年,2013年等。以下代码显示如何创建Year对象并对其执行基本操作。import java....
Java日期时间 -Java非ISO日历系统LocalDate使用ISO日历系统,这是公历。Java Date-Time API还支持其他日历,例如泰国佛教日历,H...
Java流 -Java流分区分区是分组的一种特殊情况。分组数据基于从函数返回的键。可能有很多组。分区仅处理基于谓词的两个组。评估为...