Java FX táblában miért nem jelennek meg az adatok?

0 értékelés
513 megtekintés
wineAndSoda (4 pont) kérdezte 2017. Okt 30.
Krisz szerkesztett 2017. Okt 30.

Sziasztok,

A JavaFX Középhaladó 08. Observable List résznél tartok a tanfolyamban. Annak ellenére, hogy a kódom teljesen megegyezik Krisszével, a táblám nem jeleníti meg az adatokat és nem kapok semmilyen hibaüzenetet. Nem NetBeans-t használok, hanem Eclipse (Neon.3 Release (4.6.3)) -t, ami eddig nem okozott gondot, most viszont a ezeket a figyelmeztetéseket kapom: TableView is a raw type. References to generic type TableView<S> should be parameterized; TableColumn is a raw type. References to generic type TableColumn<S,T> should be parameterized. Kód lefut, úgyhogy nem tudom ez okozza-e a gondot. A kódom a köv:

package phonebook;


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.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;

public class ViewController implements Initializable {
   
    @FXML
    TableView table;
    @FXML
    TextField inputLastname;
    @FXML
    TextField inputFirstname;
    @FXML
    TextField inputEmail;
    @FXML
    Button save;
    @FXML
    StackPane menuPane;
    @FXML
    Pane contactPane;
    @FXML
    Pane exportPane;
    
    private final ObservableList<Person> data =
            FXCollections.observableArrayList(
                new Person("Szabo", "Gyula", "[email protected]"),
                new Person("Bourne", "Jason", "[email protected]"),
                new Person("John", "Doe", "[email protected]"));
   
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        TableColumn lastNameCol = new TableColumn("Last Name");
        lastNameCol.setMinWidth(100);
        lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        lastNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
        
        TableColumn firstNameCol = new TableColumn("First Name");
        firstNameCol.setMinWidth(100);
        firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        firstNameCol.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
        
        TableColumn emailCol = new TableColumn("Email");
        emailCol.setMinWidth(200);
        emailCol.setCellFactory(TextFieldTableCell.forTableColumn());
        emailCol.setCellValueFactory(new PropertyValueFactory<Person, String>("email"));
        
        table.getColumns().addAll(lastNameCol, firstNameCol, emailCol);
        table.setItems(data);
        
    }
}

A Person POJO-m is telsejesen ugyan az, mint Krisszé.

Az eredmény pedig így néz ki:

Előre is köszönöm a tanácsokat.

Krisz Guru (2,060 pont) szólt hozzá 2017. Okt 30.
Otthonról ránézek majd mindenképpen, addig előzetesen két tanács jut eszembe:

GitHubon fent van a kód ( https://github.com/SanFranciscobolJottem/PhoneBook ), ha azt beimportálod NetBeansbe, és Eclipsebe, ott lefut a program rendesen? Ha igen, akkor mégis a te változatotban lesz valami elírás.
wineAndSoda (4 pont) szólt hozzá 2017. Okt 31.
Szia Krisz,

 Köszi a gyors választ. Már letöltöttem a  kódot a GitHubról. Az Eclipse ugyanúgy megmorogja a TableView-t és a TableColumn-t, de a kódod hibátlanul lefut. Már kb két napja nem bírok rájönni, hogy mi a baj az én kódommal, ezért is írtam.

2 Válasz

0 értékelés
balazs79 Szakértő (423 pont) válaszolta meg 2017. Okt 30.
wineAndSoda kiválasztva 2017. Nov 7.
 
Legjobb válasz

Hát nem fut le a phonebook.ViewController , mert nincs belinkelve az fxml-be!

ezt még szúrd, be
fx:controller="phonebook.ViewController"

<AnchorPane prefHeight="650" prefWidth="600.0" xmlns="http://javafx.com/javafx/8"xmlns:fx="http://javafx.com/fxml/1" fx:controller="phonebook.ViewController">

wineAndSoda (4 pont) szólt hozzá 2017. Okt 30.
Szia Balázs!

Hová rakjam fel a fájlokat?

Köszi
balazs79 Szakértő (423 pont) szólt hozzá 2017. Okt 30.
github vagy akár google drive... stb.
wineAndSoda (4 pont) szólt hozzá 2017. Okt 30.
+1 értékelés
viraggy (11 pont) válaszolta meg 2017. Okt 31.
Szia!

Én is csak most tanulom a java-t, de megnyitottam a View.fxml -t grafikus alkalmazásban és láttam hogy mind a két pane-nek egyforma fx:id-t adtál 'contactPane' ez is szerintem egy nagy hiba.Remélem evvel is tudtam valamit segíteni.

Üdv.

viraggy
balazs79 Szakértő (423 pont) szólt hozzá 2017. Okt 31.
Hát nem fut le a phonebook.ViewController , mert nincs belinkelve az fxml-be!

ezt még szúrd, be
fx:controller="phonebook.ViewController"

<AnchorPane prefHeight="650" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="phonebook.ViewController">
wineAndSoda (4 pont) szólt hozzá 2017. Nov 1.
viraggy,

Köszönöm az észrevételt. Ez valóban hiba volt, a későbbiekben gondot okozott volna.
wineAndSoda (4 pont) szólt hozzá 2017. Nov 1.
wineAndSoda szerkesztett 2017. Nov 1.
Balázs,

Köszi szépen a segítséget. Sejtettem, hogy valami bagatell hiba lesz, de nem tudtam megtalálni, hogy mi az.

Tiéd a pont, de nem látom, hogyan lehet a válaszodat helyes megoldásnak jelölni.
Krisz Guru (2,060 pont) szólt hozzá 2017. Nov 4.
Balázs kérlek írd át válasszá a megoldásodar komment helyett, hogy el lehessen fogadni. Köszi.
...