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); } }
Aihe on jo aika vanha, joten et voi enää vastata siihen.