Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据未显示在我的表JavaFX/SceneBuilder中_Java_Xml_Eclipse_Javafx_Scenebuilder - Fatal编程技术网

数据未显示在我的表JavaFX/SceneBuilder中

数据未显示在我的表JavaFX/SceneBuilder中,java,xml,eclipse,javafx,scenebuilder,Java,Xml,Eclipse,Javafx,Scenebuilder,我已经学习了很多关于如何在表格中填充单元格的教程,但我似乎无法在运行程序时让它们显示出来。你知道我做错了什么以及如何修复吗 谢谢, package application; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.f

我已经学习了很多关于如何在表格中填充单元格的教程,但我似乎无法在运行程序时让它们显示出来。你知道我做错了什么以及如何修复吗

谢谢,

package application;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;


public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("GUISCENEBUILDER.fxml"));
            Scene scene = new Scene(root,850,700);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
性质

package application;

import javafx.beans.property.SimpleStringProperty;

public class Product {
    private final SimpleStringProperty windowTime;
    private final SimpleStringProperty emailTime;


    public Product(String windowTime, String emailTime) {
        this.windowTime = new SimpleStringProperty(windowTime);
        this.emailTime = new SimpleStringProperty(emailTime);
    }

    public String getWindowTime() {
        return windowTime.get();
    }

    public void setWindowTime(String newTime) {
        windowTime.set(newTime);
    }

    public String getEmailTime() {
        return emailTime.get();
    }

    public void setEmailTime(String newTime) {
        emailTime.set(newTime);
    }   

}
TableViewController

package application;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

public class TableViewController implements Initializable {
    @FXML
    private TableView<Product> tableID;

    @FXML
    private TableColumn<Product, String> windowTime;

    @FXML
    private TableColumn<Product, String> emailTime;

    /*
     * Get all the products
     */
    ObservableList<Product> data = FXCollections.observableArrayList(
        new Product("7:00am - 8:30am", "8:30am"),
        new Product("10:00am - 11:10am", "11:10am"),
        new Product("12:00pm - 1:30pm", "1:30pm"),
        new Product("3:00pm - 4:30pm", "4:30pm")
    );

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
        windowTime.setCellValueFactory(new PropertyValueFactory<Product, String>("windowTime"));
        emailTime.setCellValueFactory(new PropertyValueFactory<Product, String>("emailTime"));

        tableID.setItems(data);
    }

}
包应用;
导入java.net.URL;
导入java.util.ResourceBundle;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.fxml.fxml;
导入javafx.fxml.Initializable;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.control.cell.PropertyValueFactory;
公共类TableViewController实现了可初始化{
@FXML
私有TableView tableID;
@FXML
私有表时间;
@FXML
私人桌面时间;
/*
*得到所有的产品
*/
ObservableList data=FXCollections.observableArrayList(
新产品(“上午7:00-8:30”、“上午8:30”),
新产品(“上午10:00-11:10am”、“上午11:10am”),
新产品(“12:00pm-1:30pm”、“1:30pm”),
新产品(“下午3:00-4:30”,“下午4:30”)
);
@凌驾
公共void初始化(URL arg0,ResourceBundle arg1){
setCellValueFactory(新属性ValueFactory(“windowTime”);
setCellValueFactory(新属性ValueFactory(“emailTime”);
tableID.setItems(数据);
}
}
FXML


您尚未在FXML文件中指定控制器类。您需要向根元素添加
fx:controller
属性:

<BorderPane  fx:controller="application.TableViewController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="850.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">

此外,您的所有表都具有相同的
fx:id
,相应的表列也具有相同的
fx:id
,这是没有意义的,并且您的一个选项卡也(莫名其妙地)与表共享相同的
fx:id
。ID应该是唯一的


最后,您将表格行的高度设置为1像素,这将使查看任何内容变得有些困难。从表视图中删除
fixedCellSize
属性。

您尚未在FXML文件中指定控制器类。您需要向根元素添加
fx:controller
属性:

<BorderPane  fx:controller="application.TableViewController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="850.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">

此外,您的所有表都具有相同的
fx:id
,相应的表列也具有相同的
fx:id
,这是没有意义的,并且您的一个选项卡也(莫名其妙地)与表共享相同的
fx:id
。ID应该是唯一的


最后,您将表格行的高度设置为1像素,这将使查看任何内容变得有些困难。从表视图中删除
fixedCellSize
属性。

。我像你说的那样添加了控制器,但是现在我在main的第15行尝试运行我的程序时出现了一个错误,它试图加载FXML.@M.Ro,那么控制器可能有问题。哦,我明白了,我更改了每个表的命名约定和固定的单元格大小,现在它工作了!非常感谢你的帮助!也许你能帮我弄一本新的?很抱歉,这是我第一次使用JavaFX编程,而不是您的响应。我像你说的那样添加了控制器,但是现在我在main的第15行尝试运行我的程序时出现了一个错误,它试图加载FXML.@M.Ro,那么控制器可能有问题。哦,我明白了,我更改了每个表的命名约定和固定的单元格大小,现在它工作了!非常感谢你的帮助!也许你能帮我弄一本新的?抱歉,这是我第一次用javaFX编程