Tôi là một chút mới đối với Java, JavaFX và lập trình nói chung, và tôi có một vấn đề đang phá vỡ bộ não của tôi.Làm thế nào tôi có thể điền một ListView trong JavaFX bằng cách sử dụng các đối tượng tùy chỉnh?
Trong hầu hết các hướng dẫn Tôi đã nhìn lên về Populating một ListView (Sử dụng một ObservableArrayList, cụ thể hơn) cách đơn giản nhất để làm điều đó là để làm cho nó từ một ObservableList của Strings, như vậy:
ObservableList<String> wordsList = FXCollections.observableArrayList("First word","Second word", "Third word", "Etc.");
ListView<String> listViewOfStrings = new ListView<>(wordsList);
Nhưng tôi không muốn sử dụng Strings. Tôi muốn sử dụng một đối tượng tùy chỉnh tôi khiến gọi từ:
ObservableList<Word> wordsList = FXCollections.observableArrayList();
wordsList.add(new Word("First Word", "Definition of First Word");
wordsList.add(new Word("Second Word", "Definition of Second Word");
wordsList.add(new Word("Third Word", "Definition of Third Word");
ListView<Word> listViewOfWords = new ListView<>(wordsList);
Mỗi đối tượng Lời chỉ có 2 thuộc tính: wordString (Một chuỗi của từ này), và định nghĩa (Một chuỗi đó là định nghĩa của từ). Tôi có getters và setters cho cả hai.
Bạn có thể thấy mã này đang đi đâu - mã biên dịch và hoạt động, nhưng khi tôi hiển thị nó trong ứng dụng của tôi, thay vì hiển thị tiêu đề của mỗi từ trong ListView, nó sẽ hiển thị đối tượng Word như một chuỗi!
Image showing my application and its ListView
Câu hỏi của tôi ở đây là, đặc biệt, là có một cách đơn giản để viết lại này:
ListView<Word> listViewOfWords = new ListView<>(wordsList);
Trong một cách như vậy mà, chứ không phải lấy từ trực tiếp từ wordsList, nó truy cập vào wordString tài sản trong mỗi Word của observableArrayList của tôi?
Chỉ cần rõ ràng, đây không phải là dành cho Android và danh sách các từ sẽ được thay đổi, lưu và tải sau cùng, vì vậy tôi không thể tạo một mảng khác để giữ chuỗi từ. Tôi đã thực hiện một chút nghiên cứu trên web và có vẻ là một thứ gọi là 'Nhà máy di động', nhưng có vẻ phức tạp không cần thiết cho những gì dường như là một vấn đề đơn giản như vậy, và như tôi đã nói trước đây, tôi có một chút một người mới khi nói đến lập trình.
Có ai giúp được không? Đây là lần đầu tiên của tôi ở đây, vì vậy tôi xin lỗi nếu tôi đã không bao gồm đủ mã của tôi hoặc tôi đã làm điều gì đó sai trái.
Cảm ơn rất nhiều câu trả lời rất chi tiết của bạn! Bây giờ tôi sẽ cố gắng ghi đè phương thức toString(), nhưng tôi sẽ thực hiện một số đọc thêm về các Nhà máy di động để hiểu rõ hơn về chúng và sau đó sửa đổi ứng dụng để sử dụng chúng theo đề xuất của bạn. Tôi sẽ chỉ sửa đổi 'định nghĩa' của từng từ riêng lẻ bằng nút chỉnh sửa đó và chế độ xem danh sách chỉ theo dõi thuộc tính 'từ', vì vậy nó không cần theo dõi các thay đổi đối với 'định nghĩa'. –