当前位置: 首页 > 知识库问答 >
问题:

JavaFX如何通过按钮更改场景大小。坐姿

陶淳
2023-03-14

我是这里的Java和JavaFx新手,我想问一个问题。简单地说,我有一个阶段,有一个按钮和一个特定大小的场景,我用这样的编码声明了场景的大小:

public class ClientBaseDialog
extends Stage
{

GridPane grid;
ScrollPane scroll;
Boolean counter = false;

public ClientBaseDialog( String Label1, String Label2 )
{

    setResizable( false );
    final Label label = new Label( Label1 );
    final Label label2 = new Label( Label2 );

    label2.setWrapText( true );


    BorderPane borderPane = new BorderPane();

    final VBox myView = new VBox();
    label.setWrapText( true );
    myView.getChildren().addAll( label2 );

    Button closeButton = new Button( "Close" );
    closeButton.setOnAction( new EventHandler<ActionEvent>()
    {
        @Override
        public void handle( ActionEvent t )
        {
            ClientBaseDialog.this.close();

        }
    } );

    Button detailButton = new Button( "Detail" );
    detailButton.setOnAction( new EventHandler<ActionEvent>()
    {
        @Override
        public void handle( ActionEvent t )
        {
            if ( counter == false )
            {
                grid.add( scroll, 1, 5 );
                counter = true;

                   Scene scene = new Scene( grid, 600, 500 );
                   setScene( scene );
            }

            else
            {

                grid.getChildren().remove( scroll );
                counter = false;
            }

        }
    } );

    label.setWrapText( true );
    label.setPrefSize( 500, 250 );
    label2.setWrapText( true );

    HBox hbox = new HBox();
    HBox hbox2 = new HBox();

    hbox.setAlignment( Pos.CENTER );
    hbox2.setAlignment( Pos.CENTER );

    hbox.getChildren().add( closeButton );
    hbox2.getChildren().add( detailButton );
    hbox.setSpacing( 10 );

    scroll = new ScrollPane();
    scroll.setContent( myView );
    scroll.setPrefHeight(300);
    scroll.setHbarPolicy( ScrollPane.ScrollBarPolicy.NEVER );
    borderPane.setBottom( scroll );
    scroll.setFitToWidth( true );

    grid = new GridPane();
    ColumnConstraints col1 = new ColumnConstraints();
    col1.setPercentWidth( 5 );
    ColumnConstraints col2 = new ColumnConstraints();
    col2.setPercentWidth( 90 );
    ColumnConstraints col3 = new ColumnConstraints();
    col3.setPercentWidth( 5 );
    grid.getColumnConstraints().addAll( col1, col2, col3 );

    RowConstraints row1 = new RowConstraints();
    row1.setPercentHeight( 10 );
    RowConstraints row2 = new RowConstraints();
    row2.setPercentHeight( 2);
    RowConstraints row3 = new RowConstraints();
    row3.setPercentHeight( 2 );
    grid.getRowConstraints().addAll( row1, row2, row3 );

    grid.setHgap( 0 );
    grid.setVgap( 10 );
    grid.setPadding( new Insets( 0, 10, 0, 10 ) );

    grid.add( label, 1, 0 );
    grid.add( hbox, 1, 3 );
    grid.add( hbox2, 1, 4 );
    grid.setAlignment( Pos.CENTER );
    Scene scene = new Scene( grid, 600, 250 );
    setScene( scene );




    }

}

基本上,我试图通过点击一个按钮来增加当前舞台/场景的大小,但不知怎么的,出现了一些错误,我得到了运行时错误,它说“java.lang.IllegalArgumentException:Grid hgap=0.0,vgap=10.0,alignment=CENTERis已经设置为另一个场景的根”,很抱歉,我没有分享完整的代码,在这里分享它很长时间,有人介意建议吗?对不起,我的英语很差

编辑:为了避免任何混乱,我将在课堂上分享完整的代码,很抱歉给您带来不便:(

共有1个答案

莫飞翮
2023-03-14

异常明确表示正在尝试将一个场景的根节点设置为另一个场景的根节点。

然而,改变场景大小的方法是错误的。
因此,与其创建新场景,不如改变舞台的大小。
换句话说,而不是

Scene scene = new Scene(grid, 600, 500);
setScene(scene);

就这么做吧

setWidth(600);
setHeight(500);
 类似资料:
  • }`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。

  • 问题内容: 你好,我有一个大问题。我想使“ =”按钮2的高度和 “ 0”按钮2的宽度(其他按钮应该只是正常大小),这就是我 尝试过的许多combinantions的结果,但是我得到的是奇怪的大小。 我明白了 我得到了什么 http://desmond.imageshack.us/Himg684/scaled.php?server=684&filename=33109545.jpg&res=land

  • 问题内容: 标题可能有点含糊,所以让我对其定义更好一些。我有一段有效的代码(在下面):我正在开发的游戏的简单主菜单。除“开始”按钮外,其他所有内容均正常运行。 我想要做的是单击“开始”按钮,并在同一阶段(窗口)中出现一个新场景。我不想看到一个新窗口打开。我已经与Java经验丰富的人进行了交谈,他们告诉我为MenuFX和GameFX创建单独的类。如果是这种情况,我需要从MenuFX类中调用GameF

  • 所以基本上我想做的是改变我的场景的一部分。我想保持一个静态菜单栏在顶部,只改变底部的部分根据哪个菜单按钮正在被点击。这意味着每个“页面”都需要不同的FXML文件和控制器类。 看看可用的JavaFX特性,我认为SubScene可以完成这项工作。但经过进一步的调查,似乎子场景是为3D东西制作的?所以我真的不知道我该做什么。 任何帮助都将不胜感激!

  • 我是JavaFX的新手。我有我的主要场景和次要场景;当我从第一个场景切换到第二个场景时,窗口的条形图变得可见。我该怎么解决呢?

  • 问题内容: 有没有一种方法可以控制CSS中单选按钮的大小? 问题答案: 是的,您应该能够像设置任何元素一样设置其高度和宽度。但是,某些浏览器并没有真正考虑这些属性。 如您所见,设置单选按钮的样式并不容易:-D