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

Javafx GUI不显示

穆景辉
2023-03-14

大家好,我是JavaFXFXML的初学者,我正在用FXMLTable view进行测试,但是netbeans在我的代码中没有显示任何错误,我无法运行我的GUI应用程序。

这里是我的fxmldocument.fxml代码。

<?xml version="1.0" encoding="UTF-8"?>

        <?import java.lang.*?>
        <?import java.util.*?>
        <?import javafx.scene.*?>
        <?import javafx.scene.control.*?>
        <?import javafx.scene.layout.*?>

        <AnchorPane id="AnchorPane" prefHeight="359.0" prefWidth="473.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="table.FXMLDocumentController">
            <children>
                <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
              <TableView fx:id="tableview" layoutX="137.0" layoutY="90.0" prefHeight="200.0" prefWidth="200.0">
                <columns>
                  <TableColumn fx:id="id" prefWidth="93.0" text="Id" />
                  <TableColumn fx:id="name" prefWidth="106.0" text="Name" />
                </columns>
              </TableView>
            </children>
        </AnchorPane>

这是一个fxml控制器代码。

package table;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.*;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;

/**
 *
 * @author pyaephyohlaing
 */
public class FXMLDocumentController implements Initializable {

    //the table's view and columns
    @FXML
    TableView<Person>tableview;
    @FXML
    TableColumn id;
    @FXML
    TableColumn name;

    //the table data
    ObservableList<Person>data = FXCollections.observableArrayList();

    @Override
    public void initialize(URL url, ResourceBundle rb) {

    //setup the table data
    id.setCellValueFactory(
            new PropertyValueFactory<Person,Integer>("id")
    );
    name.setCellFactory(
            new PropertyValueFactory<Person,String>("name")
    );

    data.add(new Person(1,"Mg Mg"));
    tableview.setItems(data);
    System.out.println("hello");
    }    

}

这里是Person类代码。(Person.java)

package table;
import javafx.beans.property.*;

// a class that represents the person data to add into the table view
public class Person {

//a variable that represent the column data neeed to be JavaFx properties(i.e SimpleStringProperty)   
//sets as the JavaFx table data property   
    public SimpleIntegerProperty id;
    public SimpleStringProperty name;

    public Person(Integer id,String name) {
        System.out.println("Hee");
        this.id=new SimpleIntegerProperty(id);
        this.name=new SimpleStringProperty(name);
    }

//getter method
    public Integer getId() {
        return  id.get();
    }
    public String getName() {
        return name.get();
    }

}

这是主要的table.java代码。

package table;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author pyaephyohlaing
 */
public class Table extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

当我运行我的项目时,GUI没有出现,它显示了许多类似的错误。

使用platform/library/Java/javavirtualmachines/jdk1.8.0_65.jdk/contents/home/jre/bin/应用程序启动方法中的Java异常执行/users/pyaephyohlaing/netbeansprojects/table/dist/run1649041788/table.jar。97)在sun.launcher.launcherHelper$FXHelper.Main(launcherHelper.java:767)处由:java.lang.RuntimeException:在com.sun.javafx.Application.launcherImpl.launchApplication1(launcherImpl.java:917)处在com.sun.javafx.Application.launcherImpl.lambda$launchApplication$156(launcherImpl.java:182)处在java.lang.thread.run(thread.java:745)处发生异常由:init(TableRowSkinbase.java:146)在com.sun.javafx.scene.control.skin.tableRowSkin.(tableRowSkin.java:64)在javafx.scene.control.tableRow.createDefaultSkin(tableRow.java:212)在javafx.scene.control.impl_processCSS(control.java:859)在javafx.scene.node.processCSS(node.java:9056)在ene.java:1646)在javafx.scene.scene.impl_preferredsize(scene.java:1720)在javafx.stage.window$9。invalidated(window.java:846)在javafx.beans.property.booleanpropertybase.mark无效(window.java:846)在javafx.beans.property.booleanpropertybase.109)在javafx.beans.property.booleanpropertybase.set(wooleanpropertybase.setE.表Java结果:1删除目录/users/pyaephyohlaing/netbeansprojects/table/dist/run1649041788 jfxsa-run:BUILD SUCCESSFUL(总时间:6秒)

我不知道我的代码出了什么问题,谁能帮我修复这个错误吗?多谢了。

共有1个答案

鲁品
2023-03-14

在FXMLDocumentController中,您将cell factory设置为Id,而我认为您的意思是将cellValueFactory设置为Name。

更改:

id.setCellFactory(
        new PropertyValueFactory<Person,String>("name")
);

致:

name.setCellValueFactory(
        new PropertyValueFactory<Person,String>("name")
);
 类似资料:
  • 我目前正在做一个项目,在这个项目中,我将时间转换为基数10时间(本质上,它最终会显示已经过去的一天的百分比。例如:中午12:00将显示为基数10时间的50.00)。目前,我知道我的算法是正确的,因为如果我把它打印到控制台,它会正确地打印出来,但是由于某种原因,我无法显示我的图形用户界面。如果我删除了试图不断更新GUI以显示正确数字的部分,GUI显示良好,但没有数字。我的代码如下: 有人知道我将如何

  • 我正在将游戏的场景从启动页面切换到游戏,如果我单独玩,游戏场景效果很好,但当我从启动页面切换后玩游戏时,游戏会冻结一段时间。 是什么原因导致我的主游戏在切换场景后冻结了一段时间(一段时间后再次启动),我确信游戏在没有切换场景的情况下运行良好。 程序的控制流程是——从播放器开始,startuppage场景被加载到舞台,如果按下播放按钮,则在主控制器中,场景被切换到我的游戏场景。问题只会在切换场景时出

  • 我有一个项目,我需要启动一个GUI,但在另一个不是我的主线程的线程中。 - - - 我的意思是,在任何情况下,我都不能在主线程中启动gui。我需要能够与我的控制器通信(示例中没有控制器)。但当我做正常的事情时:。。开始扩展应用程序{..方法,我无法再与控制器通信,因为线程已被占用。下面的代码应该允许我做我需要做的一切,所以我希望有一种方法可以让它工作。 问题是,为什么我的代码不起作用是一个例外:

  • 单击时,我的应用可在相机和图库之间进行选择,然后该图片将显示在 ImageView 中。我最初尝试显示完整图像,然后尝试使用位图方式,但没有任何效果。我只是得到一个空白的图像视图。请给我一些关于我做错了什么的指导,并在必要时要求澄清: 相机/画廊照片代码:

  • Android Studio 3.4 styles.xml 在清单中: 在activity: 这里是布局: 但工具栏未显示:

  • 问题内容: 我在程序中发现了一些问题。 我使用log4j进行日志记录, 但是,在日志文件中,所有行号都变为“?”。 对话模式如下: 问题答案: 您很可能在已编译的工件中缺少调试信息。也就是说,这不是log4j的错,您需要确保正在编译包含调试信息的东西。一个快速的测试是尝试使用您喜欢的IDE调试您的应用程序。如果没有调试信息,它将抱怨并且不会建立调试会话。

  • 我已经制作了Hello World RCP应用程序,得到了以下类结构: 向Perspective.createInitialLayout()添加额外代码: 但不显示视图。 我将breakpoint设置到perspective.createInitialLayout()中,发现它没有执行。 我的观点声明是: ApplicationWorkbenchAdvisor.GetInitialWindowPe

  • 我正在测试一个框架,并试图加载其他glTF文件,而不是教程中提供的示例。我从Sketchfab下载了几个glTF包文件,它们似乎没有加载。 如果我使用给定文件链接的框架,它会起作用:https://cdn.aframe.io/test-models/models/virtualcity/VC.gltf 但不是我从Sketchfab下载的。文件的路径是正确的-我有一个资产文件夹旁边的我的index.