Revision: 69554
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 16, 2015 11:35 by lasagna7355608
Initial Code
//Main import javafx.application.Application; import javafx.collections.FXCollections; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.control.Button; import javafx.scene.layout.VBox; import javafx.stage.Stage; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.ArrayList; import java.util.Arrays; public class Main extends Application{ public ArrayList<Method> methodArrayList = new ArrayList<Method>(Arrays.asList(Math.class.getMethods())); public static ArrayList<Method> validMethodList = new ArrayList<Method>(); public ArrayList<String> methodNameList = new ArrayList<String>(); public static void main(String[] args) { launch(args); } public Scene createScene(){ VBox root = new VBox(); root.setSpacing(10); root.setPadding(new Insets(10,10,10,10)); Label x = new Label("X"); TextField value = new TextField(); value.setId("value"); for(Method method : methodArrayList) { if (method.getParameterCount() == 1 && method.getReturnType().equals(Double.TYPE)){ Parameter parameter = method.getParameters()[0]; if(parameter.getType().equals(Double.TYPE)) { methodNameList.add(method.getName()); validMethodList.add(method); } } } ComboBox<String> methodComboBox = new ComboBox<String>(FXCollections.observableArrayList(methodNameList)); methodComboBox.setId("method"); Button btnCalc = new Button("Calculate"); btnCalc.setId("button"); Label lblAnswer = new Label("Answer: ?"); lblAnswer.setId("answer"); root.getChildren().addAll(x, value, methodComboBox, btnCalc, lblAnswer); Scene scene = new Scene(root); return scene; } @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Reflection"); Scene scene = createScene(); primaryStage.setScene(scene); Controller controller = new Controller(); controller.connectSceneUI(scene); primaryStage.show(); } } //Controller import javafx.scene.Scene; import javafx.scene.control.*; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; public class Controller { Button button = new Button(); Label label = new Label(); ComboBox comboBox = new ComboBox(); TextField textField = new TextField(); public void connectSceneUI(Scene scene) { button = (Button) scene.lookup("#button"); label = (Label) scene.lookup("#answer"); comboBox = (ComboBox) scene.lookup("#method"); textField = (TextField) scene.lookup("#value"); button.setOnAction((event) -> { ArrayList<Method> validMethodList = nmmu.wrap301.Main.validMethodList; Method method = validMethodList.get(comboBox.getSelectionModel().getSelectedIndex()); try { Double answer = (Double) method.invoke(null,Double.parseDouble(textField.getText())); label.setText("Answer: " + answer.toString()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }); } }
Initial URL
reflectionmathsexample
Initial Description
A nifty little example of reflection in Java using the Math class.
Initial Title
Example of reflection in Java using Math Class
Initial Tags
Initial Language
Java