отражение ячеек данных на javaFx - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь заполнить свой TableView контактами.Я проверил на опечатки (получить и установить), как это проверено на Java-машине для реализации столбцов, но ничего не меняется, у меня все еще есть та же ошибка отражения данных

Основной класс

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = 
    FXMLLoader.load(getClass().getResource("contactsScene.fxml"));
    primaryStage.setTitle("Contact World");
    primaryStage.setScene(new Scene(root, 700, 500));
    primaryStage.show();
}


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

Класс контакта

public class Contact {
    public SimpleStringProperty firstName;
    public SimpleStringProperty lastName;
    public SimpleStringProperty number;


    public Contact(String firstName, String lastName, String number) {
        this.firstName = new SimpleStringProperty(firstName);
        this.lastName = new SimpleStringProperty(lastName);
        this.number = new SimpleStringProperty(number);


    }

    public String getFirstName() {
        return firstName.get();
    }

    public SimpleStringProperty firstNameProperty() {return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName.set(firstName);
    }
 }

Класс контроллера

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

public class Controller{
     @FXML
    private TableView<Contact> contactTableView;
    ObservableList<Contact>data=FXCollections.observableArrayList();

    public void initialize(){
        data.addAll(new Contact("Joe","Factory","000000000"),
        new Contact("Mickael","Cell","000000000"),
        new Contact("Gerard","Data","00000000"),
        new Contact("john","Reflectivity","0000000000"));


        TableColumn firstNameCol=new TableColumn("First Name");
        firstnameCol.setCellValueFactory(new PropertyValueFactory<Contact, String>("firstName"));


        contactTableView.setItems(data);
        contactTableView.getColumns().addAll(firstNameCol);

    }

}}

FXML

     <?import javafx.scene.control.Menu?>
     <?import javafx.scene.control.MenuBar?>
     <?import javafx.scene.control.TableColumn?>
     <?import javafx.scene.control.TableView?>
     <?import javafx.scene.layout.BorderPane?>
     <?import javafx.scene.layout.VBox?>

     <?import javafx.scene.control.ListView?>
     <BorderPane xmlns:fx="http://javafx.com/fxml/1" 
     xmlns="http://javafx.com/javafx/8.0.172-ea" 
     fx:controller="contactManagement.Controller"><top><VBox>
     <MenuBar><Menu text="contacts" /> </MenuBar></VBox></top>
     <center>
     <TableView  fx:id="contactTableView">

     <columnResizePolicy>
     <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
     </columnResizePolicy>

     </TableView></center>
     </BorderPane>

Stacktrace

févr.06, 2019 15:47:23 javafx.scene.control.cell.PropertyValueFactory getCellDataReflectively ПРЕДУПРЕЖДЕНИЕ. Невозможно получить свойство 'firstName' в PropertyValueFactory: javafx.scene.control.cell.PropertyValue6cactory_cellueтип класса: class contactManagement.ContactManager.Contact java.lang.RuntimeException: java.lang.IllegalAccessException: модуль javafx.base не может получить доступ к классу contactManagement.ContactManager.Contact (в модуле Contact), потому что модуль Contact не открывает contactManagement.ContactManager для javafx.base в javafx.base / com.sun.javafx.property.PropertyReference.getProperty (PropertyReference.java:199) в javafx.controls / javafx.scene.control.cell.PropertyValueFactory.getCellDataRalleFlive (DataReflective): 182) в javafx.controls / javafx.scene.control.cell.PropertyValueFactory.call (PropertyValueFactory.java:154) в javafx.controls / javafx.scene.control.cell.PropertyValueFactory.cuej.jj (Property).javafx.controls / javafx.scene.control.TableColumn.getCellObservableValue (TableColumn.java:593) в javafx.controls / javafx.scene.control.TableColumn.getCellObservableValue (TableColumn.javatf. jcont.conf. jcont.conf).TableCell.updateItem (TableCell.java:646) по адресу javafx.controls / javafx.scene.control.TableCell.indexChanged (TableCell.java:469) по адресу javafx.controls / javafx.scene.controlelledjededx:120) по адресу javafx.controls / javafx.scene.control.skin.TableSkinUtils.resizeColumnToFitContent (TableSkinUtils.java:119) по адресу javafx.controls / javafx.scene.control.skin.TableSkinUtils.ofxUtil.tilxUtil.tilSU.controls / javafx.scene.control.skin.TableColumnHeader.doColumnAutoSize (TableColumnHeader.java:573) в javafx.controls / javafx.scene.control.skin.TableColumnHeader.updateava.conf.scene.control.skin.TableColumnHeader.lambda $ new $ 0 (TableColumnHeader.java:159) в javafx.controls / com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda $ new $ 1 (LambdaMultiplePropertyChangeListenerHandler.java:49) в javafx.base / javafx.beans.value.WeakChangeListener.changed (WeakCavab.jjfx.jjf).ExpressionHelper $ SingleChange.fireValueChangedEvent (ExpressionHelper.java:181) в javafx.base / com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent (ExpressionHelper.(ReadOnlyObjectPropertyBase.java:74) по адресу javafx.base / javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent (ReadOnlyObjectWrapper.java:102) по адресу javafx.graphics/javafue.Over.Wejavafx.graphics/javafx.scene.Node.invalidatedScenes(Node.java:1114) в javafx.graphics/javafx.scene.Node.setScenes(Node.java:1152) в javafx.graphics/javafx.scene.Parent$2.onChanged(Parent.java:369) в javafx.base / com.sun.javafx.collections.TrackableObservableList.lambda $ new $ 0 (TrackableObservableList.java:45) в javafx.base / com.sun.javafx.collections.ListListenerHelper $ Generic.fireValueChangedEvent (ListListenerHel.perf). jB.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent (ListListenerHelper.java:73)в javafx.base / javafx.collections.ObservableListBase.fireChange (ObservableListBase.java:233) в javafx.base / javafx.collections.ListChangeBuilder.commit (ListChangeBuilder.java:482) / jhane.jalf(ListChangeBuilder.java:541) в javafx.base / javafx.collections.ObservableListBase.endChange (ObservableListBase.java:205) в javafx.base / javafx.collections.ModifiableObservableListBasef.base.ObBase.Ollcom.sun.javafx.collections.VetoableListDecorator.setAll (VetoableListDecorator.java:116) в javafx.controls / javafx.scene.control.skin.NestedTableColumnHeader.updateContent (NestedTava.jf) jjcontrol.skin.NestedTableColumnHeader.computePrefHeight (NestedTableColumnHeader.java:345) при javafx.graphics/javafx.scene.Parent.prefHeight(Parent.java:1031) при javafx.graphics/javafx.scene.layout.Region.prefHeight(Region.java:1559) вjavafx.controls / javafx.scene.control.skin.TableHeaderRow.computePrefHeight (TableHeaderRow.java:376) в javafx.controls / javafx.scene.control.skin.TableHeaderRow.computeMavae.graph.jefjavafx.scene.Parent.minHeight (Parent.java:1059) в javafx.graphics/javafx.scene.layout.Region.minHeight(Region.java:1525) в javafx.controls / javafx.scene.control.SkinBase.computein (SkinBase.java:311) в javafx.controls / javafx.scene.control.Control.computeMinHeight (Control.java:512) в javafx.graphics/javafx.scene.Parent.minHeight(Parent.java:1059) в javafx.graphics/javafx.scene.layout.Region.minHeight(Region.java:1525) в javafx.graphics/javafx.scene.layout.Region.computeChildMinAreaHeight(Region.java:1915) в javafx.graphics/javafx.sornelay.getAreaHeight (BorderPane.java:630) на javafx.graphics/javafx.scene.layout.BorderPane.computeMinHeight(BorderPane.java:427) на javafx.graphics/javafx.scene.Parent.minHeight(Parent.java:1059) в javafx.graphics / javafx.scene.layout.Region.minHeight (Region.java:1525) в javafx.graphics/javafx.scene.layout.BorderPane.layoutChildren(BorderPane.java:497) в javafx.graphics/javafx.scene.Parent.layout (Parent.java:1204) в javafx.graphics/javafx.scene.Scene.doLayoutPass(Scene.java:576) в javafx.graphics/javafx.scene.Scene.preferredSize(Scene.java:1748) в javafx.graphics / javafx.scene.Scene $ 2.preferredSize (Scene.java:393) в javafx.graphics/com.sun.javafx.scene.SceneHelper.preferredSize(SceneHelper.java:66) в javafx.graphics/javafx.stage.Window$ 12.invalidated (Window.java:1086) в javafx.base / javafx.beans.property.BooleanPropertyBase.markInvalid (BooleanPropertyBase.java:110) в javafx.base / javafx.beans.property.BooleanPropertyBanper.ProsertyBase.set:145) на javafx.graphics/javafx.stage.Window.setShowing (Window.java:1174) в javafx.graphics/javafx.stage.Window.show(Window.java:1189) в javafx.graphics/javafx.stage.Stage.show(Stage.java:273) в Contact / contactManagement.Main.start (Main.java:16) в javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) в javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda $ runAndWait $ 12 (PlatformImpl.java:455) в javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) в java.base / javaContler.doPrivileged (собственный метод) по адресу javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) по адресу javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run (InvokeLaterDispatcher.java:96)на javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) на javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)в java.base / java.lang.Thread.run (Thread.java:834) Причина: java.lang.IllegalAccessException: модуль javafx.base не может получить доступ к классу contactManagement.ContactManager.Contact (в модуле Contact), потому что модуль Contact не работаетоткройте contactManagement.ContactManager для javafx.base в javafx.base / com.sun.javafx.property.MethodHelper.invoke (MethodHelper.java:69) в javafx.base / com.sun.javafx.property.PropertyReference.getProperty (свойство свойства).java: 197) ... еще 73

Сейчас я просто пробую firstName. Я думаю, что мой импорт в порядке.

...