- 浏览: 200087 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
kongyumi:
电话18800163600
初学certificate -
kongyumi:
解压密码多少?求告知
初学certificate -
船到桥头自然沉:
初学certificate -
笑海人胜:
...
JavaFX学习之Preloader -
kanjiantaiyang:
引用[img][/img][url][/url][b][/b] ...
security
Region 继承parent,被定义为屏幕的一块,可以包含其它node,并且可以用css修饰。region只有继承parent的getChildren()方法,是保护类型,所以在外面不能添加子节点,所以一般都是重写region。从region的定义中看到,region并没有坐布局处理,仅仅是包含其它node,所以子节点需要自己去控制布局。一般都是重写parent的layoutChildren去布局子节点,不过region提供了单个节点在region上布局的方法。
region的一些布局方法:
其它一些方法:
属性:
height,width ,prefHeight ,prefWidth ,minHeight ,minWidth ,maxHeight ,maxWidth 设置宽高
snapToPixel
padding
Pane 继承Region,所有布局类的父类。被定为子类已经被控制好布局,用户只需要添删。所以当你的父类是布局类时,layoutX,Y设置可能无效,因为被父类管理了。Pane可以直接使用,它并没有设置子节点的布局。
可以正常的设置layoutX,Y,也可以设置相对父类的位置。
HBox and VBox 水平和垂直盒子布局,也就是从左到右布局和从上到下布局。其子节点的布局已经被父类安排好,自己设置无效,不过可以设置translate。
HBox是水平布局,所以一般子节点只设置宽度,而子节点高度一般都由父类管理自动扩展填充,若不想由父类控制,则设置setFillHeight(boolean value)为false,取消父类的自动填充。
方法:
VBox和HBox一样,只是方向变了
AnchorPane 锚布局,通过设置其与边界的偏移位置固定位置
BorderPane 边界布局,分为上下左右中5块。 除了设置位置外,没什么特别的方法。
FlowPane 流布局,从左往右或从上往下,满了自动换行
方法:
GridPane 网格布局,每个cell大小一样,子节点按位置存放。
位置设置的一些方法:
StackPane 栈布局,子节点存放是一层层加,像栈一样,stackPane会resize子节点扩充stackPane,并且子节点自己设置大小无效,但是当子节点不能resize,或则限制了resize时,那么stackPane会把子节点放置中间。
可以看到box被resize了,尽管它自己设置了大小。
方法:
clearConstraints(Node child)
TilePane 瓦片布局,有点向flowpane,但是它的每一个节点也就是每一块瓦片都一样大小
方法:
RowConstraints 行约束
ColumnConstraints 列约束
ConstraintsBase 基本约束
region的一些布局方法:
layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment) layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, boolean fillWidth, boolean fillHeight, HPos halignment, VPos valignment) layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment) positionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment) positionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment)
其它一些方法:
setSnapToPixel(boolean value) snapPosition(double value) snapSize(double value) snapSpace(double value) resize(double width, double height) setPadding(Insets value)
属性:
height,width ,prefHeight ,prefWidth ,minHeight ,minWidth ,maxHeight ,maxWidth 设置宽高
snapToPixel
padding
Pane 继承Region,所有布局类的父类。被定为子类已经被控制好布局,用户只需要添删。所以当你的父类是布局类时,layoutX,Y设置可能无效,因为被父类管理了。Pane可以直接使用,它并没有设置子节点的布局。
Pane canvas = new Pane(); canvas.setStyle("-fx-background-color: black;"); canvas.setPrefSize(200, 200); Circle circle = new Circle(50, Color.BLUE); circle.setTranslateX(50); circle.setTranslateY(50); Rectangle rectangle = new Rectangle(100, 100, Color.RED); rectangle.relocate(70, 70); canvas.getChildren().addAll(circle, rectangle);
可以正常的设置layoutX,Y,也可以设置相对父类的位置。
HBox and VBox 水平和垂直盒子布局,也就是从左到右布局和从上到下布局。其子节点的布局已经被父类安排好,自己设置无效,不过可以设置translate。
public void init(HBox root){ Button b1 = new Button("open"); b1.setTranslateY(100); Button b2 = new Button("close"); TableView tableView = new TableView(); HBox.setHgrow(tableView, Priority.ALWAYS); root.setSpacing(20); root.setStyle("-fx-background-color:#EEEEEE"); root.getChildren().addAll(b1,b2,tableView); }
HBox是水平布局,所以一般子节点只设置宽度,而子节点高度一般都由父类管理自动扩展填充,若不想由父类控制,则设置setFillHeight(boolean value)为false,取消父类的自动填充。
方法:
setFillHeight(boolean value) //设置是否自动填充高度,为false则其子节点可以设置自己的高度 setSpacing(double value) //二个物体间隔 setHgrow(Node child, Priority value) //因为HBox是水平布局,子节点的宽度不会跟随父类一起扩展,当父类扩大时,水平方向则有空白,若想要其子节点随父类扩展而扩展则调用该方法。设置子节点水平方向动填充父节点,可以同时设置多个自己点自动扩充。 setMargin(Node child, Insets value) //为子节点间设置margin space setAlignment(Pos value) //控制子节点的位置 layoutChildren() //布局的时候用,一般是继承该类的子类,重写这个方法 getContentBias()
VBox和HBox一样,只是方向变了
AnchorPane 锚布局,通过设置其与边界的偏移位置固定位置
AnchorPane anchorpane = new AnchorPane(); anchorpane.setPrefSize(400, 400); Button buttonSave = new Button("Save"); Button buttonCancel = new Button("Cancel"); Button buttonopen = new Button("open"); Button buttonoclose = new Button("Close"); anchorpane.getChildren().addAll(buttonSave,buttonCancel,buttonopen,buttonoclose); // Add grid from Example 1-5 AnchorPane.setBottomAnchor(buttonSave, 8.0); AnchorPane.setRightAnchor(buttonCancel, 5.0); AnchorPane.setRightAnchor(buttonopen, 10.0); AnchorPane.setBottomAnchor(buttonopen, 10.0); AnchorPane.setLeftAnchor(buttonoclose, 5.0);
BorderPane 边界布局,分为上下左右中5块。 除了设置位置外,没什么特别的方法。
FlowPane 流布局,从左往右或从上往下,满了自动换行
方法:
setOrientation(Orientation value) //设置流的方向,水平或垂直 setPrefWrapLength(double value) ,prefWrapLengthProperty() //因为流布局当区域满了会自动换行,所以这里可以设置具体的换行要求(或换列) setHgap(double value) ,setVgap(double value) //子节点之间可以设置间隙,水平方向的和垂直方向的 setRowValignment(VPos value),setColumnHalignment(HPos value) //row是当水平布局时设置,column是当垂直布局时设置。 均是设置其位置,若你节点的位置刚好等于你那一行位置时,那设置就感觉不到变化。可以弄一个大的node,一个小的node,此时设置就以看到小的node有明显位置变化。
GridPane 网格布局,每个cell大小一样,子节点按位置存放。
位置设置的一些方法:
add(Node child, int columnIndex, int rowIndex, int colspan, int rowspan) //添加一个节点,位于的列,行,占几列,占几行。索引从0开始
StackPane 栈布局,子节点存放是一层层加,像栈一样,stackPane会resize子节点扩充stackPane,并且子节点自己设置大小无效,但是当子节点不能resize,或则限制了resize时,那么stackPane会把子节点放置中间。
StackPane stack = new StackPane(); Label go = new Label("Go!"); Label to = new Label("To!"); stack.setPrefSize(200,200); HBox box = new HBox(); box.setPrefSize(50, 50); box.setStyle("-fx-background-color:#EEEEEE"); System.out.println(box.isResizable()); stack.getChildren().addAll(box, go,to);
可以看到box被resize了,尽管它自己设置了大小。
方法:
clearConstraints(Node child)
TilePane 瓦片布局,有点向flowpane,但是它的每一个节点也就是每一块瓦片都一样大小
方法:
setPrefTileWidth(double value) ,setPrefTileHeight(double value) 设置单元瓦片的大小
RowConstraints 行约束
ColumnConstraints 列约束
ConstraintsBase 基本约束
发表评论
-
JavaFX学习 EventFilter
2013-01-11 10:41 3677EventFilter可以让你在事件捕捉过程中处理一些东 ... -
JavaFX学习 事件Event
2013-01-04 13:54 0常用的时间一般分为鼠标事件和键盘输入事件,看一下这些事件 ... -
JavaFX学习 自定义控件
2013-01-04 14:19 8156Control,Skin,behavior 在java ... -
JavaFX学习 位置计算
2012-12-31 15:22 1290如何得到节点在window中的位置 Point2D p ... -
JavaFX学习之Image
2013-01-11 13:53 7340ImageView and Image ImageVi ... -
JavaFX学习之Concurrent
2012-12-13 16:48 0Service Task public class ... -
JavaFX学习之Geometry
2012-12-13 16:45 0BoundingBox Bounds Dim ... -
JavaFX学习之Canvas
2013-01-15 16:20 4268Canvas and GraphicsContext ... -
JavaFX学习之Input
2012-12-13 16:39 0InputEvent Clipboard and ... -
JavaFX学习之Media
2012-12-13 16:32 0javafx支持视频和音频的播放,可以看media包下的 ... -
JavaFX学习之Paint
2012-12-13 16:29 0Paint Color ImagePatte ... -
JavaFX学习之Chart
2013-01-15 16:01 9285Chart 分piechart 和XYChart 再看看 ... -
JavaFX学习之Transform
2013-01-15 19:11 5635Transform为Node提供仿射变换,如旋转,尺度变 ... -
JavaFX学习之Effect
2013-01-14 15:53 1863Effect 抽象类,所有特殊效果的父类。 Ble ... -
JavaFX学习之Animation
2012-12-13 16:02 0Animation AnimationTimer ... -
JavaFX学习之Stage
2012-12-13 15:55 0Window Stage 刚开始的Stage由平 ... -
JavaFX学习之Web
2013-01-12 16:06 12711PopupFeatures 处理新窗口 WebHi ... -
JavaFX学习之Scene
2012-12-13 15:49 0Node setManaged(boolean va ... -
JavaFX学习之Control
2012-12-13 14:25 10669Control Control类控件通常由Control, ... -
JavaFX学习之Shape
2012-12-11 10:48 6154Shape 继承Node 方法 setFill(Pai ...
相关推荐
import javafx.scene.layout.StackPane; import javafx.scene.text.Text; import javafx.stage.Stage; public class HelloWorld extends Application { @Override public void start(Stage primaryStage) { ...
首先,JavaFX提供了丰富的UI控件,如按钮、文本框、标签、菜单等,这些控件可以通过FXML(FXML Layout)或纯Java代码进行布局和设计。FXML是一种声明式的布局语言,可以分离UI设计与业务逻辑,使代码更易于理解和...
import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("Hello, ...
FXML(FXML Layout)是JavaFX中的一个标记语言,用于分离应用程序的逻辑和视图。开发者可以使用FXML文件来定义UI布局,而控制器类(Controller)则负责处理用户交互。这种分离使得代码更易于维护和测试。在项目中,...
JavaFX的安装通常包括下载JavaFX SDK,并将其设置为项目的依赖之一。 #### 3. JavaFX架构和框架 - **场景图(Scene Graph)**:场景图是JavaFX应用的基础组成部分,它组织了所有UI元素的层次结构,使得开发者能够...
import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloWorld extends Application { public static void main(String[] args) { launch(args); } @Override public void ...
FXML(FXML Layout)是JavaFX中的一种声明式布局语言,用于简化用户界面的设计和编码分离。在本例子“javafx之fxml例子_用户登录”中,我们将探讨如何使用NetBeans IDE创建一个基于JavaFX和FXML的用户登录界面。 1....
学习JavaFX时,你需要理解事件处理机制。JavaFX中的事件处理允许用户与UI进行交互,例如点击按钮或选择菜单项。你可以为Nodes添加事件监听器,当特定事件发生时执行相应的操作。 此外,JavaFX提供了丰富的内置控件...
### JavaFX 8 学习指南 #### 一、引言 JavaFX 是 Oracle 公司为 Java 平台提供的一套丰富的用户界面框架,它旨在替代早期的 AWT 和 Swing,提供更现代、功能更强大的图形用户界面开发工具。本书《Learn JavaFX 8》...
在JavaFX中,控制器可以与FXML(FXML Layout)文件关联,实现视图和逻辑的分离。 4. **动画和过渡(Animations and Transitions)**:JavaFX提供了一系列的动画和过渡效果,可以用来创建游戏中的动态效果,如角色...
FXML(FXML Layout)是JavaFX中用于声明式设计UI的一种语言,它允许我们将UI逻辑与业务逻辑分离,使代码更易于维护和理解。 1. **JavaFX基础知识**: JavaFX是一个开源的Java库,用于创建富客户端应用,支持2D和3D...
import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class ImageRolloverDemo extends Application { public static void main(String[] args) { launch(args); } @Override public ...
在本案例中,我们关注的是`BorderPane`布局,它是JavaFX提供的五种内置布局之一。 `BorderPane`布局如其名,将区域划分为五个部分:顶部(Top)、底部(Bottom)、左侧(Left)、右侧(Right)和中心(Center)。每...
import javafx.scene.layout.StackPane; import javafx.stage.Stage; ``` 2. **创建进度条对象**: 创建一个`ProgressBar`对象并将其添加到场景的布局中: ```java ProgressBar progressBar = new ...
- **src**或**src.zip**:可能包含源代码,便于开发者查看和学习JavaFX的实现细节。 使用JavaFX 18,开发者可以利用其跨平台的能力,创建美观且功能丰富的应用程序。例如,使用FXML(FXML Layout)语言可以实现声明...
import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloWorld extends Application { @Override public void start(Stage primaryStage) { Label label = new Label("你好,...
《Learn JavaFX 8.pdf》是一本关于JavaFX 8开发的详细教材,涵盖了JavaFX编程的众多方面。JavaFX是一种用于构建富客户端应用...教材的结构和内容安排对于想要深入学习JavaFX的开发者来说,是一本非常有价值的参考资料。
通过阅读“javafx2.0 中文文档”,开发者可以深入理解这些概念,学习如何利用JavaFX 2.0创建高效、美观且功能丰富的应用程序。文档中应该包含了详细的技术指南、示例代码和API参考,帮助开发者快速上手并熟练掌握...
- **Oracle 接手**:Oracle 收购 Sun 后,在 2010 年 JavaOne 大会上宣布将停止对 JavaFX 脚本语言的支持,并将 JavaFX 的 API 导入 Java,这意味着 Java 开发者无需学习新的脚本语言即可利用 JavaFX 的功能。...
通过这个工作坊,学习者可以了解如何使用JavaFX构建美观的用户界面,并结合JDBC来实现后端的数据管理。 **JavaFX基础** JavaFX提供了一系列的控件,如按钮、文本框、表格视图等,用于构建用户友好的界面。它使用...