Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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
Java TableView内容未显示_Java_Sockets_Javafx_Tableview - Fatal编程技术网

Java TableView内容未显示

Java TableView内容未显示,java,sockets,javafx,tableview,Java,Sockets,Javafx,Tableview,我有一个用信息填充的表视图,但是虽然我可以选择保存数据的行,但文本不可见。使用table.getSelectionModel().getSelectedItem()我可以确认表中确实包含元素,但文本没有显示 我的程序中有一个套接字通信,其中服务器向客户端发送客户端需要在TableView中显示的元素的ArrayList 服务器端: private void acceptedConnection(Socket client, Connection con){ try(ObjectInput

我有一个用信息填充的表视图,但是虽然我可以选择保存数据的行,但文本不可见。使用
table.getSelectionModel().getSelectedItem()我可以确认表中确实包含元素,但文本没有显示

我的程序中有一个套接字通信,其中服务器向客户端发送客户端需要在TableView中显示的元素的ArrayList

服务器端:

private void acceptedConnection(Socket client, Connection con){
    try(ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
        ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream())){
        System.out.println("receiving request");

        String table = ois.readUTF();

        System.out.println("Preparing statement");
        PreparedStatement getTableContent = con.prepareStatement("SELECT * from " + table);

        System.out.println("Fetching results");
        ResultSet tableContentRs = getTableContent.executeQuery();

        Builder builder = null;

        switch (table){
            case "blog_user": builder = new UserBuilder();break;
        }

        assert builder != null;
        ArrayList tableContent = builder.buildArrayList(tableContentRs);


        System.out.println("Sending results");
        oos.writeObject(tableContent);
        oos.flush();
        System.out.println("Results sent");
    }catch (IOException | SQLException e){
        e.printStackTrace();
    } finally {
        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
客户端:

public void loadTableContent(){
    try (Socket client = new Socket(InetAddress.getLocalHost(), 667);
         ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
         ObjectInputStream ois = new ObjectInputStream(client.getInputStream())) {

        System.out.println("Sending request");
        String selectedTable = databaseTableComboBox.getSelectionModel().getSelectedItem();
        oos.writeUTF(selectedTable);
        oos.flush();

        table.getColumns().clear();
        table.getItems().clear();

        ArrayList data = null;
        Builder builder = null;
        switch (selectedTable){
            case "blog_user": builder = new UserBuilder();data = (ArrayList<User>)ois.readObject();break;
        }

        assert builder != null;
        builder.setColumns(table);
        table.getItems().addAll(data);
        table.refresh();
    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}
有趣的是,它已经工作了一次,但后来我添加了与其他类(例如Admin和AdminBuilder)的User和UserBuilder相同的机制,突然文本不再显示在TableView中


非常感谢所有帮助。

您的用户类需要getter方法。PropertyValueFactory需要访问这些字段

public class User {
    private final int id;
    private final String username;
    private final String pwd;

    public User(int id, String username, String pwd) {
        this.id = id;
        this.username = username;
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return id + " " + username + " " + pwd;
    }

    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPwd() {
        return pwd;
    }

}

谢谢你,成功了。我以前删除过我的getter,因为我认为我不需要它们。
public class User implements Serializable{
    private int id;
    private String username;
    private String pwd;

    public User(int id, String username, String pwd) {
        this.id = id;
        this.username = username;
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return id + " " + username + " " + pwd;
    }
}
public class User {
    private final int id;
    private final String username;
    private final String pwd;

    public User(int id, String username, String pwd) {
        this.id = id;
        this.username = username;
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return id + " " + username + " " + pwd;
    }

    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPwd() {
        return pwd;
    }

}