JavaFx implemetacja akcji

0

Witam, uczę się javy od paru tygodni i doszedłem do zagadnienia JavaFX, stworzyłem małe okienko z przyciskami i polem tekstowym. Mój problem polega na tym że szukam poradników jak mogę zacząć implementować akcje do danych pól tekstowych, klawiszy. Kompletnie nie mam pojęcia jak się do nich odwoływać. Może ktoś polecić gdzie może powinnem się cofnąć niż tak się wepchać z brakami.
Bez użycia ScenneBuilder chciałbym dokończyć działanie tej Applikacji( zwykłą do obliczania spalania auta)..

public class Spalanie extends Application {


    private double kilometry;
    private double litry;
    private double spalanieAuta;

    @Override
    public void start(Stage primaryStage) throws Exception {

         //definowanie layoutu
        GridPane gridPane = new GridPane();
        gridPane.setAlignment(Pos.CENTER);
        gridPane.setHgap(10);
        gridPane.setVgap(10);

        //definowanie elementow
        Label label_km = new Label("Podaj przejechane km: ");
        Label label_litry = new Label("Podaj spalone litry: ");
        Label label_wynik = new Label("Twoje spalanie na 100km wynosi : ");
        //Label wynik = new Label();

        TextField przejechane = new TextField();
        TextField spalone = new TextField();
        TextField spalanie = new TextField();

        Button wyczysc = new Button("Wyczysc");
        Button oblicz = new Button("Oblicz");

        //Dodawanie elementow do layoutu
        gridPane.add(label_km, 0, 0);
        gridPane.add(label_litry,0,1);
        gridPane.add(label_wynik,0,2);

        gridPane.add(przejechane, 1, 0);
        gridPane.add(spalone, 1,1);
        gridPane.add(spalanie,1,2);

        gridPane.add(wyczysc,2,0);
        gridPane.add(oblicz, 2,1);

        //definicja sceny-okna
        Scene okno = new Scene(gridPane,500,200);

        //Wyswietlanie okna
        primaryStage.setScene(okno);
        primaryStage.show();

        
    }
}

tak wygląda aktualnie kod

1

No to może zacznij od jakiegoś tutoriala:
https://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm

0

@szweszwe dzięki wielkie, postaram się je przerobić jak najszybciej.
Miedzy czasie dodałem taką akcję ale chyba nie pobiera mi danych z TextField bo wynik wychodzi 0.0, w czym może tkwić problem?

oblicz.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                kilometry =Integer.parseInt(przejechane.getText());
                litry = Integer.parseInt(spalone.getText());
                spalanieAuta = (litry/kilometry) * 100;
                System.out.println(spalanieAuta);
            }
        });
1

Obstawiam problem z używaniem int. Dzielisz sobie inta przez inta i dostajesz dziwne rzeczy. Użyj double dla kilometry i litry.

0

Nie mogę poradzić sobie z przypisaniem wyniku do TextField i wyświetleniem go w programie.

Zamiast :System.out.println(spalanieAuta);
napisałem
spalanie.setText(spalanieAuta.getText());

Otrzymuję błąd:

Error:(70, 46) java: double cannot be dereferenced

0

Piszesz w notatniku? Czy spalanieAuta nie jest jakimś doublem na którym Ty próbujesz wywołać getText()?

0

W IntellijIDEA, tak zgadza się private double spalanieAuta;, metoda getText nie mogę pobrać wartości double ? ps. jakaś podpowiedź ?

1

Musisz sobie włączyć jakiś tutorial i się pouczyć albo chociaż odpalić dokumentację. Chcesz ustawić coś w TextField więc sobie go szukasz a dla niego metody setText: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TextInputControl.html#setText-java.lang.String-
Widzisz, że przyjmuje String to szukasz jak zmienić double na Stringa i znajdujesz String.valueOf() które przyjmuje double a zwraca String więc tego używasz. Wszystko jest w dokumentacji.

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