• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodawanie obiektów typu File do ListView - JavaFX

0 głosów
247 wizyt
pytanie zadane 24 maja 2018 w Java przez Darek554 Użytkownik (980 p.)

Cześć, mam problem.

Otóż gdy próbuję dodać plik PDF, który jest zapisany w zmiennej typu File, nie wyświetla mi się on na liście - lista nie jest pusta, używałem metody isEmpty(). Nie wiem co robię źle :/

Moim zamiarem jest wybranie pliku PDF poprzez FileChooser i po kliknięciu przycisku "save" dodanie go do ListView i wyświetlenie jego nazwy.

Oto kod:

package sample.dialog;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import sample.mainController;

import java.io.File;

public class dialogController {

    @FXML
    private Button folderButton;
    @FXML
    private TextField fileDirectory;
    @FXML
    private TextField fileName;
    @FXML
    private Button saveButton;

    private File selectedFile;
    private mainController control = new mainController();

    @FXML
    public void initialize(){
        Image image = new Image(getClass().getResourceAsStream("folder_icon.png"));
        folderButton.setGraphic(new ImageView(image));
        fileDirectory.setEditable(false);
    }

    @FXML
    private void fileChoose(){
        FileChooser chooser = new FileChooser();
        FileChooser.ExtensionFilter filters = new FileChooser.ExtensionFilter("PDF","*.pdf", "*.PDF");

        chooser.getExtensionFilters().add(filters);
        chooser.setTitle("Choose File");

        selectedFile = chooser.showOpenDialog(folderButton.getScene().getWindow()); // Zapisanie wybranego pliku do zmiennej selectedFile
        fileDirectory.setText(selectedFile.getAbsolutePath());
    }

    @FXML
    private void save(){
        ListView list = control.getFilesList();
        list.getItems().setAll(selectedFile.getName());
        list.getSelectionModel().selectFirst();

        ((Stage)saveButton.getScene().getWindow()).close(); 

    }


    @FXML
    private void back(){
        ((Stage)folderButton.getScene().getWindow()).close();
    }

}

Prosiłbym o pomoc :)

komentarz 24 maja 2018 przez mbabane Szeryf (79,300 p.)
edycja 24 maja 2018 przez mbabane
Pokaż klasę MainController.

I jak wywołujesz to save?

1 odpowiedź

+1 głos
odpowiedź 24 maja 2018 przez mbabane Szeryf (79,300 p.)
wybrane 25 maja 2018 przez Darek554
 
Najlepsza

Stworzyłem taki prosty przykładzik i działa wszystko:

    @FXML
    private ListView<String> listView;


    @FXML
    public void onAction()
    {
        FileChooser fc = new FileChooser();
        FileChooser.ExtensionFilter filters = new FileChooser.ExtensionFilter("PDF", "*.pdf", "*.PDF");
        fc.getExtensionFilters().add(filters);

        File file = fc.showOpenDialog(listView.getScene().getWindow());
        listView.getItems().setAll(file.getName());
    }

To onAction podpiąłem sobie tylko pod przycisk.

komentarz 25 maja 2018 przez Darek554 Użytkownik (980 p.)

@mbabane, Dzięki za pomoc :)

Nie wiem tylko dlaczego - kiedy robię tak jak Ty, że najpierw tworzę obiekt FXMLLoader, a później do niego dodaję różne rzeczy - to wywala mi error, że nie ustawiłem ścieżki do pliku .fxml, chociaż jest ona taka sama jak w momencie kiedy ustawiałem okno dialog w ten sposób:

Parent root = FXMLLoader.load(getClass().getResource("dialog/dialogWindow.fxml"));

 

komentarz 25 maja 2018 przez mbabane Szeryf (79,300 p.)

spróbuj dodać znak "/" przed dialog

komentarz 25 maja 2018 przez Darek554 Użytkownik (980 p.)
Też nie działa :/

"Location is not set."
komentarz 25 maja 2018 przez mbabane Szeryf (79,300 p.)
To w sumie nie wiem, może jednak jest błędna ścieżka.
komentarz 25 maja 2018 przez Darek554 Użytkownik (980 p.)
Nie zmieniałem w żaden sposób tej ścieżki, wcześniej wszystko śmigało.

No nic, pokombinuję coś jeszcze :)

Podobne pytania

0 głosów
1 odpowiedź 180 wizyt
pytanie zadane 18 czerwca 2018 w Java przez ArturoS159 Początkujący (440 p.)
0 głosów
0 odpowiedzi 500 wizyt
pytanie zadane 26 lipca 2017 w Java przez Patryk Rafał Bywalec (2,700 p.)
0 głosów
1 odpowiedź 242 wizyt

88,325 zapytań

136,919 odpowiedzi

305,557 komentarzy

58,598 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...