FX TableView

T

Tintenfisch

Aktives Mitglied
Moin, ich war vor kurzen bei, mein Kalender-Project auf die volle Spaltenzahl zu erweitern. Dargestellt wird das Ganze mit eine FX TableView. Das Problem an dieser Stelle ist, dass alle erweiterten Spalten (also alle ab Spalte 6, bzw. nach user3) mit null gezeigt werden.

Zur TableView an sich, werden alle Spalten gezeigt, nur deren Inhalt wird wie gesagt ab Spalte 6 nicht dargestellt.

Die Datensätze werden in der getDate Methode erzeugt und enthalten jeweis 2 Strings und 15 ListViews.

Java:
public static ObservableList<Date> getDate(User user1, User user2, User user3, User user4, User user5, User user6, User user7,
            User user8, User user9, User user10, User user11, User user12, User user13, User user14, User user15) {
        ObservableList <Date> dateList = FXCollections.observableArrayList();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyy");
        int i = 0;
        for (LocalDate date : Date.dateList()) {
        dateList.add(new Date(date.format(formatter), date.getDayOfWeek().toString(),((User) user1).getEntry()[i],
                ((User) user2).getEntry()[i], ((User) user3).getEntry()[i], ((User) user4).getEntry()[i], ((User) user5).getEntry()[i],
                 ((User) user6).getEntry()[i], ((User) user7).getEntry()[i], ((User) user8).getEntry()[i], ((User) user9).getEntry()[i],
                 ((User) user10).getEntry()[i], ((User) user11).getEntry()[i], ((User) user12).getEntry()[i], ((User) user13).getEntry()[i],
                 ((User) user13).getEntry()[i], ((User) user15).getEntry()[i]));
        i ++;
        }
        return dateList;
    }

public void setItems (User user1, User user2, User user3, User user4, User user5, User user6, User user7, User user8, User user9, User user10,
            User user11, User user12, User user13, User user14, User user15) {
        this.name.setItems(getDate(user1, user2, user3, user4, user5, user6, user7, user8, user9, user10, user11, user12, user13, user14, user15));
    }

Anschließend soll es dann durch die cellFactory, wo aber keine Daten ankommen (die "Daten" nehmen ab Spalte 6 den weg über if.

Java:
public void setCellFactory (TableColumn<Date, LinkedList<String>> userColumn) {
        userColumn.setCellFactory(new Callback <TableColumn <Date, LinkedList<String>>, TableCell <Date, LinkedList<String>>>() {

            @Override
            public TableCell<Date, LinkedList<String>> call(TableColumn<Date, LinkedList<String>> column) {
                return new TableCell<Date, LinkedList<String>>() {
                    protected void updateItem(LinkedList<String> item, boolean empty) {
                        super.updateItem(item, empty);
                        if (item == null || empty) {
                            setText("null");
                        //    setText(null);
                            setStyle("");
                        } else {
                            setItem(item);
                            setGraphic(CalendarColumn.tableCellList(item));
                        }   }  };   } });  }

Die Date Klasse müsste an sich auch korrekt aufgebaut sein. Die getter und setter sind alle identisch aufgebaut.

Java:
public class Date {
   
    private static ArrayList<String> times = new ArrayList<>();
    private static LocalDate startDate = LocalDate.of(2021, 01, 01);
    private static LocalDate endDate = LocalDate.of(2022, 01, 01);
    private static ArrayList <String> dates = new ArrayList<>();
    private String date;
    private String dayOfWeek;
    private Object user1;
    private Object user2;
    private Object user3;
    private Object user4;
    private Object user5;
    private Object user6;
    private Object user7;
    private Object user8;
    private Object user9;
    private Object user10;
    private Object user11;
    private Object user12;
    private Object user13;
    private Object user14;
    private Object user15;
   
   
   
   
    public Date (String date, String dayOfWeek, Object user1, Object user2, Object user3, Object user4, Object user5, Object user6, Object user7,
             Object user8, Object user9, Object user10, Object user11, Object user12, Object user13, Object user14, Object user15) {
        this.date = date;
        this.dayOfWeek = dayOfWeek;
        this.user1 = user1;
        this.user2 = user2;
        this.user3 = user3;
        this.user3 = user4;
        this.user3 = user5;
        this.user3 = user6;
        this.user3 = user7;
        this.user3 = user8;
        this.user3 = user9;
        this.user3 = user10;
        this.user3 = user11;
        this.user3 = user12;
        this.user3 = user13;
        this.user3 = user14;
        this.user3 = user15;
    }
   
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getDayOfWeek() {
        return dayOfWeek;
    }
    public void setDayOfWeek(String dayOfWeek) {
        this.dayOfWeek = dayOfWeek;
    }
    public static ArrayList<String> getTimes() {
        return times;
    }
    public static void setTimes(ArrayList<String> times) {
        Date.times = times;
    }
    public Object getUser1() {
        return user1;
    }
    public void setUser1(Object user1) {
        this.user1 = user1;
    }

Erstellt sind die Columns auch alle identisch.

Java:
            CalendarColumn dateColumn = new CalendarColumn("DATE");
            dateColumn.setCellValueFactoryDate("date");
    
            CalendarColumn dayOfWeekColumn = new CalendarColumn("WEEKDAY");
            dayOfWeekColumn.setCellValueFactoryDate("dayOfWeek");

            CalendarColumn column1 = new CalendarColumn(user1.getName(), 100, true, false);
            column1.setCellValueFactory("user1");
            column1.setCellFactory(column1.getUserCol());   

            CalendarColumn column2 = new CalendarColumn(user2.getName(), 100, true, false);
            column2.setCellValueFactory("user2");
            column2.setCellFactory(column2.getUserCol());

Meine Frage nun, wo könnte es da denn noch hängen, setItems müsste ja Funktionieren und dann wären ja auch die Items in der setCellFactory verfügbar oder wo kjönnen die geblieben sein?
Wenn weiterer Code gewünscht ist, gerne Bescheid geben.
PS: Ich weiß, die Frage ist nicht wirklich konkret, stellt dennoch ein langwieriges Problem dar.
=)
 
Zuletzt bearbeitet:
J

Joreyk

Bekanntes Mitglied
Ich habe mir den Code Legit ne halbe Stunde jetzt angesehen und kapier NICHT was da passiert.. bzw was los ist es ist einfach verwirrend geschrieben

i ++;

int i = 0;
for (LocalDate date : Date.dateList()) {
???
dann hast du noch

ObservableList <Date> dateList = FXCollections.observableArrayList();
aber gleichzeitig auch noch

also irgend was statisches
aber auch noch
ObservableList <Date> dateList = FXCollections.observableArrayList();

was man alles überhalb ja noch vllt erklären kann...

aber hier bin ich total ausgestiegen


public void setItems (User user1, User user2, User user3, User user4, User user5, User user6, User user7, User user8, User user9, User user10,
User user11, User user12, User user13, User user14, User user15) {
this.name.setItems(getDate(user1, user2, user3, user4, user5, user6, user7, user8, user9, user10, user11, user12, user13, user14, user15));
}
du hast eine Objekt Funktion die eine statische Methode braucht wobei die statische Methode auch noch von aussen zugänglich ist



kannst du mal zeigen was nacheinander aufgerufen wird...und was in user steht und mal den Code universeller machen...

wenn 15 variablen an 1 Methode übergeben werden und ALLE davon gecastet werden müssen kann man davon ausgehen dass was nicht passt


EDIT: hab so lange gebraucht zum tippen dass es oben nicht mehr mit dem Post exakt zusammen passt
 
J

Joreyk

Bekanntes Mitglied
die statische dateList wurde genauso benannt wie die lokale datelist...was zur verständlichkeit nicht unbedingt was beiträgt :D
 

Ähnliche Java Themen


Oben