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

JavaFx程序运行但没有任何东西是空的,为什么?

宰父学
2023-03-14

所以我超级兴奋,我终于想出了这个程序,然后砰的一声启动它=空白屏幕。我在这里调用一个空白窗格,而其他信息没有填充吗?它是在屏幕外填充的吗?出于某种原因,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);
}




}

共有1个答案

薛征
2023-03-14

有很多问题为什么你启动app时屏幕是空白的

>

  • 当调用primarystage.setScene(scene1);时,场景为空,因此预期为空,您应该在实例化场景后设置它。在您的示例中,行后:scene1=新场景(border1,350,500);

    即使您执行了前面的步骤,屏幕仍然保持空白,因为您调用了border1.getChildres().addAll(...),这是错误的。BorderPane有5个区域topbottomleftrightcenter,因此您应该为这些区域设置一个节点,而不是将它们添加到BorderPane的子区域中。这取决于你想要“看到”它们的地方你应该把它们放在正确的地方。您应该执行类似的操作:border1.settop(...)border1.setbottom(...)等等。

  •  类似资料:
    • 本文摘自flappy bird娱乐教程的第6天--http://www.kilobolt.com/day-6-adding-graphics---welcome-to-the-necropolis.html 这是我在游戏中使用的纹理图像文件。它是一个256px64px.png文件。 这里是我用来加载纹理的类,以及我希望SpriteBatch绘制的特定的TextureRegion(纹理的一部分)。

    • 嗨,我正在为我们的项目使用activemq,每次我在本地网络中运行activemq,但我总是收到此错误,即使端口61616上没有任何东西运行 2013-04-03 08:48:28,139 |错误|无法启动阿帕奇活动 MQ (本地主机, ID: batag-1562-1364950107650-0:1).原因: java.io.IO例外: 传输连接器无法在 JMX 中注册: 无法绑定到服务器套接字

    • 我正试图装配一个KafkaStorm“你好世界”系统。我有Kafka安装和运行,当我发送数据与Kafka生产者我可以读取它与Kafka控制台消费者。 我从O'Reilly的《Storm入门》一书中选取了第二章的例子,并将其修改为使用Kafka斯库特(KafkaSpout)而不是普通的喷口。 当我运行应用程序时,kafka中的数据已经挂起,KafkaSpout的下一个线程不会收到任何消息——它进入,

    • 在过去的几天里,我们看到服务器上的JVM进入了一种状态,他们在OldGen的GC中花费了100%的CPU时间,当时: 答:他们不需要这样做,因为堆上还有足够的空间 B.他们没有回收任何东西。 通过查看堆栈跟踪并将ProcessExplorer中的ThreadID与堆栈转储中的ThreadID关联,我知道它们在GC中。每个GC线程占用大约4%的CPU。 服务器运行16 gig堆(32gig物理RAM

    • 您好,我目前正在处理HackerRank上的Java挑战,遇到了一个用我的代码无法解决的问题。 提示如下:, 给定一个字符串 s 和一个整数 k,完成该函数,以便它找到字典上长度 k 的最小和最大子字符串。 样本输入: welcometojava 3 示例输出: ava wel 最小和最大的子字符串仅基于第一个整数。因此,对于我的解决方案,我决定创建一个整数数组,并使用 String s 中每个可

    • 我需要写一个代码:一个素数是一个大于1的正整数,它只能被它自己和1整除。您要编写一个程序,反复向用户询问一个整数值,然后显示小于或等于该数字的所有质数。 功能需求 我的代码是: 有人能帮我找出我做错了什么吗?