Ohjelman neljä toimintoa (fibonacci, tribonacci, pascal, leibniz) vaihdetaan laittamalla hiiri ikkunassa olevan näppäimen päälle (ei siis tarvitse painaa näppäintä). Luvut lasketaan aina tekstikentän arvon muuttuessa.
package javafx_toiminnot;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;
public class JavaFX_Toiminnot extends Application {
int valinta = 0; //Valintoja on neljä.
@Override
public void start(Stage primaryStage) {
//Tehdään asettelu.
Button btn = new Button("Valitse");
TextField teksti = new TextField();
TilePane root = new TilePane();
//Lisätään objektit.
root.getChildren().add(btn);
root.getChildren().add(teksti);
//Lasketaan luvut aina, kun tekstikenttä muuttuu.
//Tekstikentän arvo ei saa olla tyhjä.
teksti.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
int maara = 0;
//Otetaan lukujen määrä.
if (!teksti.getText().equals("")){
maara = Integer.valueOf(teksti.getText());
}
//Seuraavilla muuttujilla operoidaan laskuja.
int a = 0;
int b = 0;
int c = 0;
switch (valinta){
case 1: //Fibonacci.
a = 0;
b = 1;
c = 0;
System.out.println("Fibonacci");
for (int x = 0; x < maara; x++){
c = a+b;
a = b;
b = c;
System.out.println(c);
}
break;
case 2: //Tetraedri
a = 0;
b = 0;
c = 0;
System.out.println("Tetraedri");
for (int x = 0; x < maara; x++){
a++;
b += a;
c += b;
System.out.println(c);
}
break;
case 3: //Pascal
a = 1;
b = maara-1; //Kertoja
c = 1; //Jakaja
//Kertoja pienenee ja jakaja kasvaa joka kierroksella.
System.out.println("Pascal");
for (int x = 0; x < maara; x++){
System.out.println(a);
a *= b;
a /= c;
b--;
c++;
}
break;
case 4: //Leibniz
a = 1;
b = maara; //Kertoja
c = 0; //Jakaja
//Kertoja pienenee ja jakaja kasvaa joka kierroksella.
System.out.println("Leibniz");
for (int x = 0; x < maara; x++){
a *= b;
if (c > 0){
a /= c;
}
System.out.println(1 + "/" + a);
b--;
c++;
}
break;
}
}
});
//Toimintoa vaihdetaan aina, kun hiiri menee näppäimen päälle.
btn.addEventHandler(MouseEvent.MOUSE_ENTERED, (MouseEvent event) -> {
valinta++;
if (valinta > 4){
//Aloitetaan alusta.
valinta = 1;
}
});
//Luodaan ikkuna.
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}Aihe on jo aika vanha, joten et voi enää vastata siihen.