精华内容
下载资源
问答
  • JavaFX VBox

    2020-12-23 01:56:45
    JavaFX教程 - JavaFX VBoxVBox布局将子节点堆叠在垂直列中。新添加的孩子被放置在上一个子节点的下面。默认情况下,VBox尊重孩子的首选宽度和高度。当父节点不可调整大小时,例如Group节点,最大垂直列的宽度基于...

    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;

    /*fromwww.java2s.com*/

    public class Main extends Application {

    @Override

    public void start(Stage primaryStage) {

    Group root = new Group();

    Scene scene = new Scene(root, 300, 250);

    // 5 pixels space between child nodes VBox vbox = new VBox(5);

    // 1 pixel padding between child nodes only vbox.setPadding(new Insets(1));

    Rectangle r1 = new Rectangle(10, 10);

    Rectangle r2 = new Rectangle(20, 100);

    Rectangle r3 = new Rectangle(50, 20);

    Rectangle r4 = new Rectangle(20, 50);

    HBox.setMargin(r1, new Insets(2, 2, 2, 2));

    vbox.getChildren().addAll(r1, r2, r3, r4);

    root.getChildren().add(vbox);

    primaryStage.setScene(scene);

    primaryStage.show();

    }

    public static void main(String[] args) {

    launch(args);

    }

    }

    上面的代码生成以下结果。

    VBox间距

    VBox vbox = new VBox(8); // spacing = 8

    vbox.getChildren().addAll(new Button("Cut"), new Button("Copy"), new Button("Paste"));

    import javafx.application.Application;

    import javafx.scene.Group;

    import javafx.scene.Scene;

    import javafx.scene.control.Button;

    import javafx.scene.layout.VBox;

    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 vbox = new VBox(8); // spacing = 8

    vbox.getChildren().addAll(new Button("Cut"), new Button("Copy"), new Button("Paste"));

    scene.setRoot(vbox);

    stage.setScene(scene);

    stage.show();

    }

    public static void main(String[] args) {

    launch(args);

    }

    }

    上面的代码生成以下结果。

    设置填充和间距

    import javafx.application.Application;

    import javafx.geometry.Insets;

    import javafx.scene.Scene;

    import javafx.scene.control.Button;

    import javafx.scene.control.Label;

    import javafx.scene.layout.VBox;

    import javafx.scene.text.Font;

    import javafx.scene.text.FontWeight;

    import javafx.stage.Stage;

    /*fromwww.java2s.com*/

    public class Main extends Application {

    public static void main(String[] args) {

    Application.launch(args);

    }

    @Override

    public void start(Stage primaryStage) {

    primaryStage.setTitle("VBox Test");

    // VBox VBox vb = new VBox();

    vb.setPadding(new Insets(10, 50, 50, 50));

    vb.setSpacing(10);

    Label lbl = new Label("VBox");

    lbl.setFont(Font.font("Amble CN", FontWeight.BOLD, 24));

    vb.getChildren().add(lbl);

    // Buttons Button btn1 = new Button();

    btn1.setText("Button1");

    vb.getChildren().add(btn1);

    Button btn2 = new Button();

    btn2.setText("Button2");

    vb.getChildren().add(btn2);

    Button btn3 = new Button();

    btn3.setText("Button3");

    vb.getChildren().add(btn3);

    Button btn4 = new Button();

    btn4.setText("Button4");

    vb.getChildren().add(btn4);

    // Adding VBox to the scene Scene scene = new Scene(vb);

    primaryStage.setScene(scene);

    primaryStage.show();

    }

    }

    上面的代码生成以下结果。

    展开全文
  • JavaFX VBox调整大小

    2020-12-23 01:56:48
    我的弹出类扩展StackPane它的构造看起来像这样:JavaFX VBox调整大小public PopUp (String str){super();Color dark = Color.rgb(0, 0, 0, 0.35);setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);...

    我在基于JavaFX的游戏中创建弹出式确认消息,并试图弄清楚布局是如何工作的。我的弹出类扩展StackPane它的构造看起来像这样:JavaFX VBox调整大小

    public PopUp (String str)

    {

    super();

    Color dark = Color.rgb(0, 0, 0, 0.35);

    setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);

    setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE);

    FXUtil.backgroundColor(dark, this);

    Text displayText = new Text(str);

    displayText.setFont(FontFactory.general(18.0));

    displayText.setFill(Color.WHITE);

    displayText.setWrappingWidth(560.0);

    buttonBox = new HBox(20.0);

    buttonBox.setAlignment(Pos.CENTER);

    FXUtil.backgroundColor(Color.GREY, buttonBox);

    VBox arrangement = new VBox(20.0, displayText, buttonBox);

    arrangement.setAlignment(Pos.CENTER);

    arrangement.setMaxWidth(600.0);

    FXUtil.backgroundColor(Color.RED, arrangement);

    getChildren().add(arrangement);

    }

    (该FXUtil类是用于设置背景颜色的方便,FontFactory是这听起来像)

    几个按钮的加入得到之后,但我很惊讶地发现VBox安排使用了完整的垂直空间,即使它的首选高度是其子项的总高度(加上插入等,按照文档)。基本上,这是一个高大的红色横杆,跨越窗口的高度。

    有没有办法让它使用它的首选高度而不是最大高度?我希望它的高度足以适合其孩子。

    +2

    您可以将其最大高度属性绑定到其前置高度之一。 –

    +0

    好主意,但它没有改变任何东西。我添加了:arrangement.maxHeightProperty()。bind(arrangement.prefHeightProperty());但它仍然是一个高大的红色酒吧。 –

    +0

    以前的评论不正确。 –

    展开全文
  • 如何平均分配JavaFX VBox的元素我想知道是否有任何預定義的方法可以使用,以便標籤均勻分佈(基於VBox高度)。如果我調整窗口的大小,應該調整標籤(我的意思是標籤之間的空間),使它們仍然均勻分佈(在任何兩個標籤之間...

    Im使用VBox並向其添加了三個標籤。標籤之間的垂直空間使用setSpacing()方法進行設置。但它是一個固定值,說20。如果我將該值更改爲50,則空間將會增加。但它是硬編碼。如何平均分配JavaFX VBox的元素

    我想知道是否有任何預定義的方法可以使用,以便標籤均勻分佈(基於VBox高度)。如果我調整窗口的大小,應該調整標籤(我的意思是標籤之間的空間),使它們仍然均勻分佈(在任何兩個標籤之間具有相同的空間)。

    作爲VBox被設定在BorderPane的左側,我想 「lab0」 在 「顯示行1」, 「lab1中的」 在 「顯示行5」 和「實驗2 「at」Display Line 9「(根據對齊方式)。在更多TextFields被添加的情況下,「lab2」最後應該是「Display Line X」。

    我的代碼在這裏...請標記。

    import javafx.application.Application;

    import javafx.geometry.Insets;

    import javafx.geometry.Pos;

    import javafx.scene.Scene;

    import javafx.scene.control.Button;

    import javafx.scene.control.Label;

    import javafx.scene.control.RadioButton;

    import javafx.scene.control.TextField;

    import javafx.scene.control.ToggleGroup;

    import javafx.scene.paint.Color;

    import javafx.scene.shape.Circle;

    import javafx.scene.text.Font;

    import javafx.scene.layout.BorderPane;

    import javafx.scene.layout.FlowPane;

    import javafx.scene.layout.GridPane;

    import javafx.scene.layout.StackPane;

    import javafx.scene.layout.VBox;

    import javafx.scene.layout.HBox;

    import javafx.stage.Stage;

    public class MyJavaFx extends Application

    {

    public MyJavaFx()

    {

    }

    public void start(Stage primaryStage)

    {

    BorderPane pane = new BorderPane();

    pane.setTop(getRadioButtons());

    pane.setBottom(getPushButtons());

    pane.setLeft(getLeftLabels());

    pane.setRight(getRightLabels());

    pane.setCenter(getTextFields());

    Scene scene=new Scene(pane,1000,800);

    primaryStage.setTitle("Even");

    primaryStage.setScene(scene);

    primaryStage.show();

    }

    public static void main(String arg[])

    {

    Application.launch(arg);

    }

    FlowPane getRadioButtons()

    {

    FlowPane pane = new FlowPane();

    pane.setPadding(new Insets(10,10,10,10));

    pane.setHgap(10);

    RadioButton rb[]=new RadioButton[3];

    ToggleGroup radioGroup = new ToggleGroup();

    for(int i=0;i

    {

    rb[i] = new RadioButton("Flag "+(i+1));

    rb[i].setToggleGroup(radioGroup);

    pane.getChildren().add(rb[i]);

    }

    rb[0].setSelected(true);

    pane.setAlignment(Pos.CENTER);

    return pane;

    }

    FlowPane getPushButtons()

    {

    FlowPane pane = new FlowPane();

    pane.setPadding(new Insets(10,30,30,10));

    pane.setHgap(10);

    Button rb[]=new Button[3];

    for(int i=0;i

    {

    rb[i] = new Button("but"+i);

    pane.getChildren().add(rb[i]);

    }

    pane.setAlignment(Pos.BOTTOM_RIGHT);

    return pane;

    }

    VBox getLeftLabels()

    {

    VBox pane = new VBox();

    pane.setPadding(new Insets(10,10,10,10));

    pane.setSpacing(20);

    Label ll[]=new Label[3];

    for(int i=0;i

    {

    ll[i] = new Label("lab"+i);

    pane.getChildren().add(ll[i]);

    }

    ll[0].setAlignment(Pos.TOP_LEFT);

    ll[1].setAlignment(Pos.CENTER_LEFT);

    ll[2].setAlignment(Pos.BOTTOM_LEFT);

    pane.setAlignment(Pos.CENTER_LEFT);

    return pane;

    }

    VBox getRightLabels()

    {

    VBox pane = new VBox();

    pane.setPadding(new Insets(10,10,10,10));

    pane.setSpacing(20);

    Label rb[]=new Label[3];

    for(int i=0;i

    {

    rb[i] = new Label("lab"+i);

    pane.getChildren().add(rb[i]);

    }

    pane.setAlignment(Pos.CENTER_RIGHT);

    return pane;

    }

    VBox getTextFields()

    {

    VBox pane = new VBox();

    pane.setPadding(new Insets(10,10,10,10));

    pane.setSpacing(2);

    TextField tf[]=new TextField[9];

    for(int i=0;i

    {

    tf[i] = new TextField("Display Line "+(i+1));

    pane.getChildren().add(tf[i]);

    }

    pane.setAlignment(Pos.CENTER_RIGHT);

    return pane;

    }

    }

    展开全文
  • JavaFX VBox位置设置

    2020-05-29 16:26:14
    import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Group; import javafx.scene.Scene;...import javafx.scene.layout.VBox; import javafx.scene.shape.L...

              

     

    import javafx.application.Application;
    import javafx.geometry.Pos;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.Pane;
    import javafx.scene.layout.VBox;
    import javafx.scene.shape.Line;
    import javafx.stage.Stage;
    
    /**
     * @Author: ZhangHao
     * @Description: 位置测试
     * @Date: 2020/5/29 9:42
     * @Version: 1.0
     */
    public class PositionTest extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        @Override
        public void start(Stage primaryStage) {
            Pane pane = new Pane();
            pane.setPrefWidth(200);
            pane.setPrefHeight(200);
            Group group = new Group();
            group.setAutoSizeChildren(false);
            VBox vBox = new VBox();
            Button button = new Button("测试");
            button.setPrefWidth(100);
            Group group1 = new Group();
            group1.getChildren().add(button);
            vBox.getChildren().add(group1);
            vBox.setLayoutX(100);
            vBox.setLayoutY(100);
            vBox.setMinWidth(100);
            vBox.setPrefWidth(100);
    //        vBox.setAlignment(Pos.CENTER);
    //        vBox.setAlignment(Pos.CENTER_LEFT);
    //        vBox.setAlignment(Pos.BOTTOM_RIGHT);
            vBox.setAlignment(Pos.BOTTOM_LEFT);
            group.getChildren().add(vBox);
            Line line1 = new Line(100, 0, 100, 200);
            Line line2 = new Line(0, 100, 200, 100);
            pane.getChildren().addAll(line1, line2, group);
            primaryStage.setScene(new Scene(pane));
            primaryStage.show();
        }
    }
    

     

    展开全文
  • JavaFX VBox和HBox布局

    2021-07-19 18:30:11
    I'm working on a JavaFX application which has a layout generated from an external data structure, composed ofdisplaying components that know their own aspect ratios (height as a dependent of width)2 t...
  • javafx-VBox操作

    2021-09-14 18:40:28
    清空vbox所有条目 vinsp.getChildren().clear();
  • JavaFX 布局——VBox

    千次阅读 2018-12-25 22:56:03
    import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.control....
  • import javafx.application.Application;import javafx.event.ActionEvent;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control....import javafx.scene.layout.VBox;imp...
  • JavaFX 布局 HBox VBox

    2020-05-23 11:32:11
    HBox VBox HBox HBox root = new HBox(); root.setSpacing(20); root.setAlignment(Pos.CENTER); VBox VBox root = new VBox(); root.setSpacing(20); root.setAlignment(Pos.CENTER);
  • 一:相关类和方法1:javafx.scene.layout.Priority,一个枚举类,用于确定给定节点的增长(或缩小)优先级。比如:一个HBox布局,里面有三个控件,当屏幕宽度是800时,刚好把屏幕占满,但是当屏幕扩大到1200时,这个...
  • 布局窗格HBox和VBox绝对是JavaFX 2.0中最基本的布局容器。 如您所知,它们的用途是将所有子级布置在一个水平行( HBox )或一个垂直列( VBox )中。 因为它们非常容易使用,并且对于较小的布局问题非常有用,所以...
  • javafx布局类HBox和VBox

    万次阅读 多人点赞 2019-04-08 10:01:14
    HBox HBox中的H是Horizontal的首字母,意为水平的。HBox即水平的布局,将组件按水平方向依次排列。 代码 package javafxbeans; ...import javafx.application.Application;...import javafx.scen...
  • VBox_学习JavaFx|WIKI教程

    2021-03-13 02:38:48
    javafx.scene.layout名为VBox的类表示VBox窗格。 该类包含五个属性,它们是 -alignment - 此属性表示VBox边界内节点的对齐方式。 您可以使用setter方法setAlignment()为此属性设置值。fillHeight - 此属性是布尔...
  • import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.AnchorPane; ...
  • 1)例如 2)您可以使用JavaFx Scene Builder,这是一个JavaFx的可视化布局工具。 例如,如果我想创建一个Hbox布局: 保存,它作为myLayout.fxml主类中,并添加下列代码: Hbox root = FXMLLoader.load(getClass()....
  • VBox classBox = new VBox();className = new Text("defaultClass");classBox.setAlignment(Pos.CENTER);classBox.getChildren().add(className);classBox.getStyleClass().add(VM_BOXES);variablesBox = new VBox()...
  • JavaFX几种典型的布局策略为了构造我们所需要的程序界面,我们会使用JavaFX提供的丰富的控件来实现这一目标。但是如何摆放这些控件的位置是一个重要的问题,JavaFX提供了一种特殊的控件,即面板Pane来解决这个问题,...
  • //vinsp 是vbox,sp是scrollpanel service = new Service<String>() { @Override protected Task<String> createTask() { return new Task<String>() { @Override protected
  • VBox高度
  • 1:水平布局 package application; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Scene;...import javafx.scene.control....import javafx.scene.input.MouseEv...
  • 我意识到这是一个非常基本的问题,但我只是开始专门学习GUI和JavaFX . 我有一个标签列表及其相应的文本输入字段和一个计算结果的按钮 . 我想将它们全部对齐:标签..........文本字段标签..........文本字段标签........
  • 我有一张卡,它由页眉,正文和页脚组成,可以由更多节点组成,例如标签,文本字段等。on mouse clicked当 卡内发生单击时,无论何时是卡本身还是它的子代之一,我都需要捕捉事件。...VBox cardCo...
  • DOC-05-02 调整节点大小和对齐的技巧本文主要介绍在JavaFX的布局面板中如何设置节点的大小和对齐方式。使用JavaFX内置布局面板的一个主要好处在于节点的大小和对齐方式是由布局面板来控制的。当布局面板的大小变化时...
  • 另外JavaFX在Android上打包发布目前都没有什么问题,不过JavaFX游戏在Android上效率一般,毕竟只是Canvas绘图,所以对帧率等要求比较高的游戏还是不建议将JavaFX发布到Android上。个人最近在写自己简单的游戏引擎的...
  • >您可以使用JavaFx Scene Builder,它是JavaFx的可视化布局工具. 例如,如果我想创建一个Hbox布局: 将它保存为主类中的myLayout.fxml,并在代码中添加以下内容: Hbox root = FXMLLoader.load(getClass().getResource...
  • javafx布局 这里就只介绍了,我主要用到的两种。 VBox    VBox布局将子节点堆叠在垂直列中。新添加的子节点被放置在上一个子节点的下面。默认情况下,VBox尊重子节点的首选宽度和高度。   当父...
  • VBox vbox = new VBox(10); for (int i = 0;i < 10;++i) { Button button = new Button("button" + Conver.nsb(i).toString()); vbox.getChildren().add(button); } pane.getChildren().add(vbox); ...
  • JavaFX教程目录 JavaFX开发教程-基础达标-布局实战-Pane、Group、RegionJavaFX教程目录1.Pane()源码-Pane()2.Group()源码-Group()3Region()源码-Region() 1.Pane() 源码-Pane() Stage(窗口) 通常对应于一个窗口,...
  • import javafx.scene.layout.VBox; import javafx.stage.Stage; public class ButtonGraphicTest extends Application { @Override public void start(final Stage stage) throws Exception { final Label response...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,414
精华内容 565
关键字:

javafxvbox

java 订阅
友情链接: tsdemux.tar.gz