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.