Oracle TableView中的多个列

时间:2014-11-14 08:53:04

标签: database oracle javafx tableview

我认为我的代码工作率为90%。 输出是正确的,但并非所有列都显示在tableview中。 我不知道问题出在哪里。

fx:id是对的,代码也是,我相信。

这是开放节目的图片。我也会给你输出一个我的控制器一个表格代码。启动代码并不重要。

照片: http://www.directupload.net/file/d/3791/aitj4rff_png.htm

输出:

*** Loaded Oracle-Driver ***
*** Connected with Database ***
Film: Hugo          Gesehen: JA
Film: FAST and FURIOS 6         Gesehen: JA
Film: Emil          Gesehen: NEIN
Film: DAS_BOOT          Gesehen: JA
*** Database data saved to Observable List named 'data'
*** Table Items setted ***

table_controller:

package controller;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

import oracle.jdbc.*;
import model.filmtable_data;
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;

@SuppressWarnings("unused")
public class table_controller implements Initializable {
    private ObservableList<filmtable_data> filmData = FXCollections.observableArrayList();

    @FXML
    private TableView<filmtable_data> FilmTable;
    @FXML
    private TableColumn<filmtable_data, String> Filmtitel_Col;
    @FXML
    private TableColumn<filmtable_data, Integer> ID_Col;
    @FXML
    private TableColumn<filmtable_data, String> Gesehen_Col;



    @Override
    public void initialize(URL location, ResourceBundle resources) {
        // Observable List

        ID_Col.setCellValueFactory(new PropertyValueFactory<filmtable_data, Integer>("rID"));
        Filmtitel_Col.setCellValueFactory(new PropertyValueFactory<filmtable_data, String>("rFilmtitel"));
        Gesehen_Col.setCellValueFactory(new PropertyValueFactory<filmtable_data, String>("rGesehen"));
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                System.out.println("*** Loaded Oracle-Driver ***");
            } catch (ClassNotFoundException e1) {
                System.out.println("Driver-Loading failed.");
                e1.printStackTrace();
            }
        try {
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:lukas/1234@10.140.79.39:1521:OTTO");
            Statement statement = conn.createStatement();
            ResultSet resultset = statement.executeQuery("SELECT FILMTITEL, GESEHEN FROM LUKA1");
            String filmtitel = "empty";
            String gesehen = "empty";
            int zaehler = 1;
            System.out.println("*** Connected with Database ***");
            while (resultset.next()) {
                filmtitel = resultset.getString("FILMTITEL");
                gesehen = resultset.getString("GESEHEN");
                System.out.println("Film: " + filmtitel + "\t\t\tGesehen: " + gesehen);
                filmtable_data entry = new filmtable_data(zaehler, filmtitel, gesehen);
                filmData.add(entry);
                zaehler++;
                }
            System.out.println("*** Database data saved to Observable List named 'data'");
            FilmTable.setItems(filmData);
            System.out.println("*** Table Items setted ***");
            statement.close();
        }   catch (SQLException e) {
                System.out.println("Login fehlgeschlagen.");
                e.printStackTrace();
        }
    }   
}

filmtable_data:

package model;

import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;

public class filmtable_data {

    private final SimpleIntegerProperty rID;
    private final SimpleStringProperty rFilmtitel;
    private final SimpleStringProperty rGesehen;

    public filmtable_data (Integer sID, String sFilmtitel, String sGesehen) {
        this.rID = new SimpleIntegerProperty(sID);
        this.rFilmtitel = new SimpleStringProperty(sFilmtitel);
        this.rGesehen = new SimpleStringProperty(sGesehen);
    }

    public Integer getRID() {
        return rID.get();
    }

    public void setRID(int set) {
        rID.set(set);
    }

    public String getRFilmtitel() {
        return rFilmtitel.get();
    }

    public void setRFilmtitel(String set) {
        rFilmtitel.set(set);
    }

    public String setRGesehen() {
        return rGesehen.get();
    }

    public void setRGesehen(String set) {
        rGesehen.set(set);
    }
}

fx文件:

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

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

<AnchorPane prefHeight="366.0" prefWidth="268.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.table_controller">
   <children>
      <TableView fx:id="FilmTable" prefHeight="366.0" prefWidth="425.0">
        <columns>
            <TableColumn fx:id="ID_Col" minWidth="-Infinity" prefWidth="43.0" text="ID" />
          <TableColumn fx:id="Filmtitel_Col" prefWidth="137.0" text="Filmtitel" />
            <TableColumn fx:id="Gesehen_Col" prefWidth="137.0" text="Gesehen" />
        </columns>
      </TableView>
   </children>
</AnchorPane>

1 个答案:

答案 0 :(得分:0)

您的POJO课程中有拼写错误,并且没有getter:

这是错误的:

public String setRGesehen() {
    return rGesehen.get();
}

应该是:

public String getRGesehen() {
    return rGesehen.get();
}

请注意,您还应添加属性方法,例如:

public StringProperty rGesehenProperty() {
    return rGesehen;
}

即使使用错误的吸气剂,因为PropertyValueFactory首先看房产,它也会起作用。