java - 缺少在表格内显示数据的代码

标签 java netbeans javafx

目标:
显示数据,下方,表格内部

"Jacob", "Smith", "jacob.smith@example.com"
"Isabella", "Johnson", "isabella.johnson@example.com"
"Ethan", "Williams", "ethan.williams@example.com"
"Emma", "Jones", "emma.jones@example.com"
"Michael", "Brown", "michael.brown@example.com"

问题:
为了显示表格内的数据,我缺少什么代码?

信息:
  • 我是 JavaFX 的新手。
  • 我正在使用 netbeans

  • <?xml version="1.0" encoding="UTF-8"?>
    
    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    
    <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="787.0" prefWidth="1086.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
       <top>
          <MenuBar BorderPane.alignment="CENTER">
            <menus>
              <Menu mnemonicParsing="false" text="File">
                <items>
                  <MenuItem mnemonicParsing="false" text="Close" />
                </items>
              </Menu>
              <Menu mnemonicParsing="false" text="Edit">
                <items>
                  <MenuItem mnemonicParsing="false" text="Delete" />
                </items>
              </Menu>
              <Menu mnemonicParsing="false" text="Help">
                <items>
                  <MenuItem mnemonicParsing="false" text="About" />
                </items>
              </Menu>
            </menus>
          </MenuBar>
       </top>
       <center>
          <TableView id="ttt" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
            <columns>
              <TableColumn id="firstNameCol" prefWidth="124.0" text="First name" />
              <TableColumn id="lastNameCol" prefWidth="139.0" text="Last name" />
                <TableColumn id="emailCol" minWidth="7.0" prefWidth="197.0" text="Email" />
                <TableColumn id="addressCol" prefWidth="105.0" text="Address" />
                <TableColumn id="zipcodeCol" prefWidth="100.0" text="Zipcode" />
                <TableColumn id="cityCol" prefWidth="204.0" text="City" />
            </columns>
          </TableView>
       </center>
    </BorderPane>
    
    package dreamcrm;
    
    import javafx.application.Application;
    import javafx.collections.FXCollections;
    import javafx.collections.ObservableList;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Group;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.TableView;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    
    public class DreamCRM extends Application {
    
        private TableView<Person> table = new TableView<Person>();
        private final ObservableList<Person> data =
            FXCollections.observableArrayList(
                new Person("Jacob", "Smith", "jacob.smith@example.com"),
                new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
                new Person("Ethan", "Williams", "ethan.williams@example.com"),
                new Person("Emma", "Jones", "emma.jones@example.com"),
                new Person("Michael", "Brown", "michael.brown@example.com")
            );    
    
    
        @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);
        }
    
    }
    
    package dreamcrm;
    
    import java.net.URL;
    import java.util.ResourceBundle;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Label;
    
    
    public class FXMLDocumentController implements Initializable {
    
        @FXML
        private Label label;
    
        @FXML
        private void handleButtonAction(ActionEvent event) {
            System.out.println("You clicked me!");
            label.setText("Hello World!");
        }
    
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            // TODO
        }    
    
    }
    
    package dreamcrm;
    
    import javafx.beans.property.SimpleStringProperty;
    
    
    public class Person {
    
        private final SimpleStringProperty firstName;
        private final SimpleStringProperty lastName;
        private final SimpleStringProperty email;
    
        public Person(String fName, String lName, String email) {
            this.firstName = new SimpleStringProperty(fName);
            this.lastName = new SimpleStringProperty(lName);
            this.email = new SimpleStringProperty(email);
        }
    
        public String getFirstName() {
            return firstName.get();
        }
    
        public void setFirstName(String fName) {
            firstName.set(fName);
        }
    
        public String getLastName() {
            return lastName.get();
        }
    
        public void setLastName(String fName) {
            lastName.set(fName);
        }
    
        public String getEmail() {
            return email.get();
        }
    
        public void setEmail(String fName) {
            email.set(fName);
        }    
    
    }
    

    最佳答案

    您将需要使用 fx:id而不是 id为了这。 fx:id仍然可以使用 CSS 选择器,所以不用担心。

    正如@fabian 指出的那样,我错过了,您还需要添加 fx:controller在您的 fxml 文件中,以便它知道将要控制它的内容。

    在您的文档 Controller 中,您需要让它知道它正在使用 @FXML 从您的 fxml 文档中获取一些信息。

    所以像这样,

    @FXML
    private TableView ttt;
    @FXML
    private TableColumn<Person, String> firstNameCol, lastNameCol, emailCol,addressCol, zipCol, cityCol;
    

    在这里,您使用您的 fx:id作为变量名。

    然后,在您的 initialize功能,您需要设置 cellValueFactory ,像这样。
    @FXML
    public void initialize(){
        firstNamecol.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
    //etc..
    
    //Don't forget to add your list that you made to the tableview
    ttt.setItems(list);
    }
    

    添加 ObservableList 后您现在可以添加和删除项目,它应该会相应更新。

    在相关说明中,您需要拥有 SimpleStringProperty作为可返回值,即
    public StringProperty firstNameProperty(){
        return firstName;
    }
    

    这应该让你开始。

    关于java - 缺少在表格内显示数据的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002308/

    相关文章:

    java - 需要创建用户在swing应用程序中输入的信息并将其写入文件

    java - 如何拆分包含两个日期的文本行

    java - 如何在 Java 中使用 Button Group Swing 控件?

    php - Xdebug Netbeans PHP Docker

    java - TableCell 超链接在 TableView 上未正确对齐 - JavaFX

    java - 如何处理 hibernate 产生的唯一字段?

    java - 如何从JComboBox中的选定项目中获取包含2个项目的数组?

    java - JavaFX 中的多个 boolean 绑定(bind)

    java - 无法在 IntelliJ Idea IDE 中解析符号 javafx.application

    java - 如何以自定义方式处理多行结果?