Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Java: Kertoimen ja potenssin näyttäminen (JavaFX)

koodaaja [18.06.2020 04:59:39]

#

Tässä ohjelmassa käytetään JavaFX-kirjastoa käyttäen GridPane-asettelua. Ohjelma laskee potenssin tai kertoimen (valinta tehdään RadioButtonien kautta) aina kun käyttäjä syöttää uuden luvun, eli näppäintä ei tarvita. Tämän jälkeen tulos näytetään Slider:ssä ja ProgressIndicatori:ssa. Slideriin on asetettu merkit.

package javafx_slider2;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class JavaFX_Slider2 extends Application {

    int valinta = 1; //Ohjelmassa on kaksi valintaa.
    @Override
    public void start(Stage s) {


        //Luodaan objektit.
        TextField teksti = new TextField();
        Slider saadin = new Slider(0,500,0);
        //Lisätään säätimeen merkit.
        saadin.setShowTickLabels(true);
        saadin.setShowTickMarks(true);
        //Kielletään suora muokkaus säätimelle.
        saadin.setDisable(true);
        //Lisätään ProgressIndicator
        ProgressIndicator tulos = new ProgressIndicator(0.5);
        //Lisätään RadioButtonit.
        ToggleGroup tg = new ToggleGroup();
        RadioButton r1 = new RadioButton("kerroin");
        RadioButton r2 = new RadioButton("potenssi");
        //Laitetaan RadioButtonit yhteen.
        r1.setToggleGroup(tg);
        r2.setToggleGroup(tg);

        //Lisätään kuuntelija, joka suorittaa toiminnon, kun käyttäjä kirjoittaa luvun.

        EventHandler<KeyEvent> event = (KeyEvent e) -> {
            try {
                int luku = Integer.valueOf(teksti.getText());
                //Lasketaan seuraava kerroin tai potenssi ja näytetään tulos.
                double t = 0;
                if (valinta == 1){
                     t = 2+2*luku;
                }
                else if (valinta == 2){
                     t =2*Math.pow(2,luku);
                }

                System.out.println(t);
                saadin.setValue(t);
                tulos.setProgress(t/100);
            } catch (NumberFormatException exception){

            }
        };
        tg.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
           public void changed(ObservableValue<? extends Toggle> ob, Toggle o, Toggle n){
             RadioButton rbttn = (RadioButton)tg.getSelectedToggle();
             //Valintoja on kaksi. Valitaan.
             if (rbttn != null){
                 String str = rbttn.getText();
                 if (str.equals("kerroin")){
                     valinta = 1;
                 }
                 else if (str.equals("potenssi")){
                     valinta = 2;
                 }
             }
           }
        });
        teksti.addEventHandler(KeyEvent.KEY_TYPED, event);
        //Luodaan asettaja.
        GridPane grid = new GridPane();
        grid.setPadding(new Insets(10,10,10,10));
        //Asetetaan objektit.
        grid.add(teksti,0,0);
        grid.add(saadin,0,1);
        grid.add(tulos,0,2);
        grid.add(r1,1,0);
        grid.add(r2,1,1);
        Scene scn = new Scene(grid);
        //Luodaan ikkuna.
        s.setScene(scn);
        s.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta