JavaFx程序运行,但没有一个是空的,为什么?

JavaFx程序运行,但没有一个是空的,为什么?,javafx,Javafx,所以我非常激动,我终于想出了这个程序,然后BAM启动它=空白屏幕。我在这里调用一个空白窗格,而其他信息没有填充?它是在填充,还是在屏幕外?出于某种原因,JavaFX真的让我着迷。如果有人有什么好地方可以去读的话。(我知道谷歌在工作,我找到的很多网站/地方都不适合我 package application; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.geometry.I

所以我非常激动,我终于想出了这个程序,然后BAM启动它=空白屏幕。我在这里调用一个空白窗格,而其他信息没有填充?它是在填充,还是在屏幕外?出于某种原因,JavaFX真的让我着迷。如果有人有什么好地方可以去读的话。(我知道谷歌在工作,我找到的很多网站/地方都不适合我

package application;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class Main extends Application {

Button button1, button2;
Label label1, label2;
Scene scene1, scene2;
BorderPane border1, border2;
Stage stage;  

ComboBox<String> choseImage;
ImageView mga1 = new ImageView(new 
Image(getClass().getResourceAsStream("/res/mga1.jpg")));
ImageView mga2 = new ImageView(new 
Image(getClass().getResourceAsStream("/res/mga2.jpg")));
ImageView mga3 = new ImageView(new 
Image(getClass().getResourceAsStream("/res/mga3.jpg")));

@Override
public void start(Stage primaryStage) throws Exception {

    primaryStage.setTitle("multi-factor key");
    primaryStage.setScene(scene1);

    //passPhrase
    TextField passPhrase = new TextField();
    button1 = new Button("submit");
    button1.setOnAction(e -> handleButtonAction(e));
    label1 =new Label ("Type in your PassPhrase");

    border1=new BorderPane();
    border1.getChildren().addAll(passPhrase, button1, label1);
    border1.setPadding(new Insets(20));
    BorderPane.setAlignment(passPhrase, Pos.CENTER);
    BorderPane.setAlignment(button1, Pos.BOTTOM_CENTER);
    BorderPane.setAlignment(label1, Pos.TOP_CENTER);
    scene1 = new Scene(border1, 350, 500);


    //combobox
    choseImage = new ComboBox<>();
    choseImage.setPromptText("Select a image.");
    choseImage.getItems().addAll("mga1.png"
    + "mga2.jpg"
        +   "mga3.png");

    choseImage.setValue("mga1.png");
    label2=new Label("Select a image");
    System.out.println(choseImage.getValue());
    String Selection = choseImage.getValue();
    if (Selection == "mga1.png")
            BorderPane.setAlignment(mga1, Pos.CENTER_RIGHT);
    if (Selection == "mga2.jpg")
            BorderPane.setAlignment(mga2, Pos.CENTER_RIGHT);
    if (Selection == "mga3.jpg");
            BorderPane.setAlignment(mga3, Pos.CENTER_RIGHT);



    border2= new BorderPane();
    border2.setPadding(new Insets(20));
    border2.getChildren().addAll(choseImage,label2);
    BorderPane.setAlignment(choseImage, Pos.CENTER);
    BorderPane.setAlignment(label2, Pos.TOP_CENTER);

    scene2 = new Scene(border2, 350, 500);
    primaryStage.show();




}

private void handleButtonAction(ActionEvent event) {
    if (event.getTarget()==button1)
        stage.setScene(scene1);
}




}
包应用;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.geometry.Insets;
导入javafx.geometry.Pos;
导入javafx.scene.Node;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.control.ComboBox;
导入javafx.scene.control.Label;
导入javafx.scene.control.TextField;
导入javafx.scene.image.image;
导入javafx.scene.image.ImageView;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.layout.VBox;
导入javafx.stage.stage;
公共类主扩展应用程序{
按钮1,按钮2;
标签label1、label2;
场景1、场景2;
边框窗格边框1、边框2;
阶段性;
组合框选择图像;
ImageView mga1=新的ImageView(新的
图像(getClass().getResourceAsStream(“/res/mga1.jpg”);
ImageView mga2=新的ImageView(新的
图像(getClass().getResourceAsStream(“/res/mga2.jpg”);
ImageView mga3=新的ImageView(新的
图像(getClass().getResourceAsStream(“/res/mga3.jpg”);
@凌驾
public void start(Stage primaryStage)引发异常{
primaryStage.setTitle(“多因子键”);
初生阶段:场景1;
//密码短语
TextField passPhrase=new TextField();
按钮1=新按钮(“提交”);
按钮1.设置动作(e->把手按钮动作(e));
label1=新标签(“输入您的密码”);
border1=新的BorderPane();
border1.getChildren().addAll(密码短语、按钮1、标签1);
边框1.设置填充(新插图(20));
BorderPane.setAlignment(密码短语,位置中心);
边框窗格。设置对齐(按钮1,位置底部\中间);
边框窗格。设置对齐(标签1,位置顶部\中间);
场景1=新场景(边界1350500);
//组合框
choseImage=新组合框();
setPrompText(“选择图像”);
choseImage.getItems().addAll(“mga1.png”
+“mga2.jpg”
+“mga3.png”);
choseImage.setValue(“mga1.png”);
label2=新标签(“选择图像”);
System.out.println(choseImage.getValue());
字符串选择=choseImage.getValue();
如果(选择==“mga1.png”)
边框窗格。设置对齐(mga1,位置中间\右侧);
如果(选择==“mga2.jpg”)
边框窗格。设置对齐(mga2,位置居中\右);
如果(选择==“mga3.jpg”);
边框窗格.设置对齐(mga3,位置居中\右);
border2=新的边框窗格();
边框2.设置填充(新插图(20));
border2.getChildren().addAll(choseImage,label2);
边框窗格。设置对齐(选择图像,位置中心);
边框窗格。设置对齐(标签2,位置顶部\中间);
场景2=新场景(边界2350500);
primaryStage.show();
}
私有无效把手按钮操作(ActionEvent事件){
if(event.getTarget()==button1)
第二阶段(场景1);
}
}

启动应用程序时,为什么屏幕是空白的,有很多问题

  • 调用
    primaryStage.setScene(scene1);
    场景为空,因此预期为空,您应该在实例化场景后设置场景。在您的示例中,应在以下行之后:
    scene1=新场景(border135500);

  • 即使执行上一步,屏幕仍然保持空白,因为您调用了
    border1.getChildren().addAll(…)
    这是错误的。
    边框窗格
    有5个区域顶部底部
    左侧
    右侧和
    中心
    ,因此您应该为这些区域设置一个节点,而不是将它们添加到边框窗格的子项中。这取决于您想“查看”的位置你应该把它们放在正确的位置。你应该像这样做:
    border1.setTop(…)
    border1.setBottom(…)
    等等


  • 当你启动应用程序时,为什么屏幕是空白的,有很多问题

  • 调用
    primaryStage.setScene(scene1);
    场景为空,因此预期为空,您应该在实例化场景后设置场景。在您的示例中,应在以下行之后:
    scene1=新场景(border135500);

  • 即使执行上一步,屏幕仍然保持空白,因为您调用了
    border1.getChildren().addAll(…)
    这是错误的。
    边框窗格
    有5个区域顶部底部
    左侧
    右侧和
    中心
    ,因此您应该为这些区域设置一个节点,而不是将它们添加到边框窗格的子项中。这取决于您想“查看”的位置你应该把它们放在正确的位置。你应该像这样做:
    border1.setTop(…)
    border1.setBottom(…)
    等等

  • primaryStage.setScene(scene1);
    scene1为空。
    primaryStage.setScene(scene1);
    scene1为空。