Rysowanie wykresu funkcji – cześć II

W klasie widoku dodaj pola, w których można wprowadzić dolny i górny zakres oraz przycisk Pokaż.

Polom edycyjnym i przyciskowi będą przypisane defaultowe nazwy zmiennych. Możesz je zmienić. Na przykład polom możesz nadać nazwy lowTextField i highTextField.

Podobnie możesz nadać nazwę panelowi, na przykład panelGrafiki. (Kliknij prawym przyciskiem na komponent i wybierz opcję ChangeVariableName.)

Zawartość pól tekstowych jest widokiem wartości low i high zdefiniowanych w klasie panelu. Reprezentacja tekstowa w  lowTextField i highTextField oraz wartości w low i high muszą być synchronizowane.

·        Po uruchomieniu aplikacji pola tekstowe powinny wyświetlać wartość początkową  zakresów. Dlatego w konstruktorze widoku (klasa XXXView) dodaj na końcu dwie instrukcje:

        lowTextField.setText(Double.toString(panelGrafiki.low));

        highTextField.setText(Double.toString(panelGrafiki.high));

·        Po naciśnięciu przycisku należy odczytać zawartość pól tekstowych, przekonwertować na wartości liczbowe, wstawić do pól low i high, a następnie wymusić przerysowanie komponentu.

1.      Dodaj w klasie XXXView handler obsługujący zdarzenie actionPerformed dla przycisku Pokaż. Handler jest funkcją wywoływaną po naciśnięciu przycisku. Nadamy mu nazwę onPokaz().

Wewnątrz handlera

a.       Zawartość tekstu odczytaj za pomocą metody getText()

b.      Przekonwertuj na liczbę typu double za pomocą metody Double.parseDouble() przypisz zmiennym low i high zdefiniowanym w panelu.        

c.       Wywołaj metodę repaint() komponentu panel

 

Czyli:

        panelGrafiki.low = Double.parseDouble(lowTextField.getText());

        panelGrafiki.high = Double.parseDouble(highTextField.getText());

        panelGrafiki.repaint();

 

2.      Uwaga, jeśli w polu edycyjnym wpiszemy liczbę o złym formacie, pojawi się błąd sygnalizowany przez wyjątek. Należy go przechwycić i obsłużyć.

 

private void onPokaz(java.awt.event.ActionEvent evt) {                        

// TODO add your handling code here:

    try{

        panelGrafiki.low = Double.parseDouble(lowTextField.getText());

        panelGrafiki.high = Double.parseDouble(highTextField.getText());

        panelGrafiki.repaint();

    }

    catch(Exception e){

        lowTextField.setText(Double.toString(-2*Math.PI));

        highTextField.setText(Double.toString(2*Math.PI));

        onPokaz(evt);

    }

}

3.      Uwaga, jeśli na panelu zostają ślady poprzedniego wykresu – odznacz pole opaque (przezroczysty) w jego właściwościach.