Notatnik-javafx

0

Witam. Mam do napisania notatnik i piszę go w javafx. Notatnik ma sprawdzać czy przy otwieraniu dany plik istnieje, jeśli nie to wyświetlić komunikat o błędzie i wymusić wybranie poprawnego pliku. Używam FileChooser i nie wiem jak zrobić gdy wpiszę nieistniejącą nazwę pliku i kliknę otwórz aby okno nie znikało.

 FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Otwórz plik");
        File file = fileChooser.showOpenDialog(new Stage());
        if(file.exists()){
            ReadFile read = new ReadFile(file.getAbsoluteFile().toPath());
            read.readFile();
        } else{
            
        }
0

Jeżeli dobrze rozumiem to masz już prawie rozwiązanie. Jak wpiszesz błędna nazwę, plik nie zostanie odnaleziony a tym samym metoda file.exists() zwróci false. W związku wystarczy, że zrobisz jakiegoś while albo raczej do-while, który będzie działał do momentu w którym file.exists() zwróci true bądź z fileChooser wybierzesz cancel. W innym wypadku zawsze z powrotem poprosi o podanie pliku.

0

Taka pętla zawiesza mi program.

0

Pokaż jak tę pętlę napisałeś.

0

FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Otwórz plik");
        File file = fileChooser.showOpenDialog(new Stage());
 do{
           if(file.exists()){
               ReadFile read = new ReadFile(file.getAbsoluteFile().toPath());
               read.readFile();
           }
       }while(!file.exists());
0

Jeśli ktoś wybierze nieistniejący plik, będziesz miał nieskończoną pętlę - zastanów się dlaczego.

0

Ok już wiem dlaczego mam nieskończoną pętle. Tylko nie rozumiem jak pętla ma spowodować, że openDialog po wciśnięciu otwórz nie zniknie, a będzie można znów wprowadzić poprawną nazwę pliku.

0

OpenDialog musi zniknąć (przy takim podejściu), ponieważ najpierw on znika (wykonuje się fileChooser.showOpenDialog), a dopiero potem sprawdzasz czy plik istnieje.
Najprościej będzie po prostu ponownie otworzyć okienko, jeśli się okaże, że wybrany plik jest niepoprawny.

0

Ok rozumiem. Myślałem że jest jakiś sposób, aby nie znikało. Ale w windowsie notatnik działa właśnie w taki sposób jaki muszę zrobić. Oraz wydaje mi się, że na zajęciach jak w swingu robiliśmy podobny zadanie też można było w taki sposób zrealizować. Dlatego myślałem, że javafx też nie istnieje taki sposób.

0

Używając JFileChooser można było coś takiego zrobić nadpisując metodę approveSelection() ale czy w javafx używając FileChooser tak można niestety nie mam pojęcia. Możesz się najwyżej przyjrzeć temu dokładniej (czy istnieje taka metoda itp.)

0

Ok dzięki za pomoc.

0

Problem rozwiązany.

0

Po prostu na linuxie tak się zachowuje filechooser. Sprawdziłem kod na Windowsie i działa jak chciałem.

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