Dodawanie zdjęć JavaFx

0

Witam,

Mam aplikacje w JavaFx posiadająca listę produktów oraz ich opis po zaznaczeniu w textarea, posiada również funkcjonalność dodawania nowych produktów w nowym oknie, które później są widoczne w widoku głównym na liście. Doszedłem do momentu gdzie nie za bardzo wiem co dalej zrobić, a mianowicie, chciałbym żeby w opcjach dodawania produktu była możliwość dodania zdjęcia z dysku tak żeby później to zdjęcie wyświetlało się razem ze szczegółami produktu po jego zaznaczeniu w panelu głównym aplikacji.

1

Aby user mógł podać obraz potrzebujesz FileChoosera. Sprawdzasz czy nie jest nullem (user może kliknąć anuluj i można się ładnie przejechać) i zapisać w jakimś folderze/bazie danych/cokolwiek.
Aby wyświetlić obraz potrzebujesz ImageView
Nie wiem tylko jak wygląda Twoja lista, czy po kliknięciu ten TextArea się pojawia (rozwija), czy jest na stale gdzieś ustawiony i tylko wypełniasz go odpowiednim contentem po kliknięciu.

0

Ok, to jeszcze jedno pytanie. Mam klasę nadrzędną produkty, od niej odchodzą inne klasy, które posiadają pola specyficzne dla danego produktu. W tym momencie w każdej podklasie tworzę osobną ArrayListe do przechowywania nowych produktów. Jak wyrzucić informacje o wszystkich produktach do jednej listy na GUI?
Oczekiwany efekt: lista ze wszystkim produktami po lewej (3 wspólne pola - nazwa / cena / dostępność) po kliknięciu po prawej stronie w textarea pojawiają się informacje już rozszerzone o informacje z pól klas, które dziedziczą po klasie głównej.

0

W tym momencie w każdej podklasie tworzę osobną ArrayListe do przechowywania nowych produktów.
Tego nie rozumiem. Pokaż kod. Może ktoś mądrzejszy ode mnie pomoże.

0

To może prościej - mam klasę nadrzęną produkty po niej dziedziczą klasy: rowery, kaski, akcesoria, skutery. W produktach mam takie pola jak nazwa, cena, dostępność. W podklasach mam szczegółowe dane np. dla rowerów rozmiar ramy etc.

Jak zrobić tak żebym miał na gui w liście wszystkie produkty. Ale po kliknięciu mieć informacje różne dla każdego produktu. Np. klikam na rower wyskakuje mi informacja nazwa, cena, dostępność, rozmiar ramy, a klikam na kask i pokazuję mi się dane z pól nazwa, cena, dostępność i np. rozmiarkasku?

Poniżej przykładowy kod prezentujący mój problem, mam Controller, który pobiera dane uniwersalne dla wszystkich produktów. Niestety nie potrafię zrobić tak żeby po kliknięciu rozróżniał jakie dodatkowe informacje ma wyświetlić.


public class Controller {

    private List<TodoItem> todoItems;

    @FXML
    private ListView<TodoItem> todoListView;

    @FXML
    private TextArea itemDetailsTextArea;

    public void initialize() {
        TodoItem item1 = new TodoItem("Mail birthday card", "Buy a 30th birthday card for John",
                LocalDate.of(2016, Month.APRIL, 25));
        TodoItem item2 = new TodoItem("Doctor's Appointment", "See Dr. Smith at 123 Main Street.  Bring paperwork",
                LocalDate.of(2016, Month.MAY, 23));
        TodoItem item3 = new TodoItem("Finish design proposal for client", "I promised Mike I'd email website mockups by Friday 22nd April",
                LocalDate.of(2016, Month.APRIL, 22));
        TodoItem item4 = new TodoItem("Pickup Doug at the train station", "Doug's arriving on March 23 on the 5:00 train",
                LocalDate.of(2016, Month.MARCH, 23));
        TodoItem item5 = new TodoItem("Pick up dry cleaning", "The clothes should be ready by Wednesday",
                LocalDate.of(2016, Month.APRIL,20));

        todoItems = new ArrayList<TodoItem>();
        todoItems.add(item1);
        todoItems.add(item2);
        todoItems.add(item3);
        todoItems.add(item4);
        todoItems.add(item5);

        todoListView.getItems().setAll(todoItems);
        todoListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }

    @FXML
    public void handleClickListView() {
        TodoItem item = todoListView.getSelectionModel().getSelectedItem();
        StringBuilder sb = new StringBuilder(item.getDetails());
        sb.append("\n\n\n\n");
        sb.append("Due: ");
        sb.append(item.getDeadline().toString());
        itemDetailsTextArea.setText(sb.toString());


    }
}
 
0

Nie wiem jak wygląda Twoja klasa TodoItem, ale najlogiczniejszym rozwiązaniem byłaby implementacja metody toString(), albo stworzenie jakiejś innej, zwracającej pewne zmienne obiektowe (np. item.getName(), item.getPrice() ...)
Przecież pobierasz tutaj jakieś dane:

StringBuilder sb = new StringBuilder(item.getDetails());

Co zwraca metoda getDetails()?

1 użytkowników online, w tym zalogowanych: 0, gości: 1