Laboratorium 7
Zadanie
W ramach tego zadania przygotujemy aplikację wspieraj acą naukę ortografii. W tym celu proszę napisać program, który:
-
Otwiera wskazany przez użytkownika plik tekstowy.
-
Zamienia w odczytanym tekście polskie litery ó, u, ż, rz, ch i h na „?”.
-
Zmodyfikowany tekst wpisuje do pola tekstowego, np. typu
JEditorPane
lubJTextPane
. -
Umożliwia zmianę tekstu w polu tekstowym.
-
Pozwala na sprawdzenie, czy użytkownik poprawnie uzupełnił brakujące litery w wyrazach (czy nie zrobił błędu).
-
Pozwala na zmianę stylu wyświetlanego tekstu (np. kursywa, tekst pogrubiony).
-
Umożliwia zapisanie zmodyfikowanego tekstu do pliku tekstowego.
Do obsługi błędów ortograficznych proszę napisać własny wyjątek (np. IncorrectSpellingExcepion). W tym wyjątku będzie przekazywana lista niepoprawnie napisanych słów.
Wymagania
-
Program poprawnie odczytuje i zapisuje pliki w formacie UTF-8, poprawnie wyświetla polskie znaki w aplikacji.
-
Wykorzystanie JFileChooser do wyboru plików do odczytu/zapisu.
-
Aplikacja ma pasek menu (JMenu) z co najmniej dwiema opcjami do wyboru (np. odczyt/zapis pliku, zmiana stylu tekstu).
-
Wykorzystanie napisanego wyjątku w procedurze sprawdzania pisowni.
-
Informacja o błędnej pisowni jest wyświetlana za pomocą okna dialogowego.
Punktacja:
-
Stworzenie graficznego interfejs użytkownika i wszystkich niezbędnych komponentów – 1 pkt
-
Odczyt tekstu z pliku, zmiana polskich znaków na '?' i wpisanie do pola
JEditorPane
lubJTextPane
. – 1 pkt -
Zapis zawartości pola tekstowego do pliku – 1 pkt
-
Zmiana stylu tekstu w polu tekstowym – 1 pkt
-
Sprawdzania poprawności tekstu (wystarczy informacja, czy są błędy ortograficzne) – 0.5 pkt
-
Wyświetlenie informacji, czy w tekście są błędy ortograficzne, korzystając z okienka dialogowego – 0.5 pkt
-
Wykorzystanie napisanego wyjątku podczas sprawdzania poprawności tekstu, wyświetlenie niepoprawnie zapisanych słów przekazanych w wyrzuconym wyjątku - 1 pkt
Wskazówki i przykłady:
-
Sprawdzenie pisowni można zrealizować przez porównanie oryginalnego tekstu z tekstem uzupełnionym przez użytkownika (zakładając, że ten pierwszy jest poprawnie zapisany). Polecana metoda klasy String: replace oraz replaceAll.
-
Do zapisu i odczytu proszę wykorzystać strumienie znakowe, np:
-
InputStreamReader isr = new InputStreamReader(
new FileInputStream("plik.txt"),
Charset.forName("UTF-8").newDecoder()
); -
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream("plik.txt"),
Charset.forName("UTF-8").newEncoder()
);
-
-
Przykład wykorzystania
JEditorPane
iJTextPane
: https://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html -
Tworzenie i wykorzystanie własnych wyjątków: https://www.ibm.com/developerworks/community/blogs/738b7897-cd38-4f24-9f05-48dd69116837/entry/declare_your_own_java_exceptions?lang=en
-
Okna dialogowe w Javie: https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
-
Przykładowe pliki: dyktando-v1.txt, dyktando-v2.txt na podstawie dyktanda z VI Podlaskich Akademickich Mistrzostw w Ortografii - 2016
-
Podział tekstu na pojedyncze słowa: https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html