尝试将 HBox 分配到底部时 JavaFX BorderPane 抛出错误
JavaFX BorderPane throwing errors when trying to assign HBox to the bottom
我试图将按钮放在我的 BorderPane 的底部,但我一直收到错误消息,我以前一直在使用它,但现在收到错误消息 "Exception in Application start method"。
package assign3;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Question2 extends Application
{
@Override
public void start( Stage obPrimeStage ) throws Exception
{
Button btRed = new Button("Red");
Button btGreen = new Button("Green");
Button btBlue = new Button("Blue");
Button btOrange = new Button("Orange");
Button btStart = new Button("Start");
BorderPane obBorder = new BorderPane();
HBox obPane = new HBox();
obPane.getChildren().add(btRed);
obPane.getChildren().add(btGreen);
obPane.getChildren().add(btBlue);
obPane.getChildren().add(btOrange);
obPane.getChildren().add(btStart);
obBorder.setBottom(obPane);
Scene obScene = new Scene(obPane, 400, 400);
obPrimeStage.setTitle("Question 2");
obPrimeStage.setScene(obScene);
obPrimeStage.show();
btRed.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
});
btGreen.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
});
btBlue.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, Insets.EMPTY)));
});
}
public static void main( String[] args )
{
Application.launch(args);
}
}
我觉得它与 obBorder.setBottom(obPane) 有关,但不确定。我们的讲师掩盖了所有这些,即使在查看了 javadoc 之后我也很难理解它。
如有任何帮助,我们将不胜感激。
您不能将节点添加到另一个窗格,和使其成为场景的根。 (阅读 stack trace:它准确地告诉您出了什么问题。)
我想你的意思是
Scene obScene = new Scene(obBorder, 400, 400);
而不是
Scene obScene = new Scene(obPane, 400, 400);
我试图将按钮放在我的 BorderPane 的底部,但我一直收到错误消息,我以前一直在使用它,但现在收到错误消息 "Exception in Application start method"。
package assign3;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Question2 extends Application
{
@Override
public void start( Stage obPrimeStage ) throws Exception
{
Button btRed = new Button("Red");
Button btGreen = new Button("Green");
Button btBlue = new Button("Blue");
Button btOrange = new Button("Orange");
Button btStart = new Button("Start");
BorderPane obBorder = new BorderPane();
HBox obPane = new HBox();
obPane.getChildren().add(btRed);
obPane.getChildren().add(btGreen);
obPane.getChildren().add(btBlue);
obPane.getChildren().add(btOrange);
obPane.getChildren().add(btStart);
obBorder.setBottom(obPane);
Scene obScene = new Scene(obPane, 400, 400);
obPrimeStage.setTitle("Question 2");
obPrimeStage.setScene(obScene);
obPrimeStage.show();
btRed.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.RED, CornerRadii.EMPTY, Insets.EMPTY)));
});
btGreen.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.GREEN, CornerRadii.EMPTY, Insets.EMPTY)));
});
btBlue.setOnAction((ActionEvent e) ->
{
obPane.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, Insets.EMPTY)));
});
}
public static void main( String[] args )
{
Application.launch(args);
}
}
我觉得它与 obBorder.setBottom(obPane) 有关,但不确定。我们的讲师掩盖了所有这些,即使在查看了 javadoc 之后我也很难理解它。
如有任何帮助,我们将不胜感激。
您不能将节点添加到另一个窗格,和使其成为场景的根。 (阅读 stack trace:它准确地告诉您出了什么问题。)
我想你的意思是
Scene obScene = new Scene(obBorder, 400, 400);
而不是
Scene obScene = new Scene(obPane, 400, 400);