...
Code Block | ||||
---|---|---|---|---|
| ||||
package kalkulator; import javafx.beans.property.StringProperty; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TextField; public class KalkulatorController { private double value1memory = 0.0; private String value2valueText = null; private String operator = null; @FXML TextField valueTextvalueTextField; @FXML void initialize() { updateValueField(); } private void updateValueField() { if (value2valueText != null) { valueTextvalueTextField.setText(value2valueText); validateValue2validateValueTextField(); } else { valueTextvalueTextField.setText(String.valueOf(value1memory)); } } @FXML private void handleValueTextChanged(StringProperty prop, String oldValue, String newValuevalidateValueTextField() { value2 = valueText.getText();try { validateValue2(); } private void validateValue2() { try { // prøv å konvertere teksten i tekstfeltet Double.valueOf(value2valueTextField.getText()); valueTextvalueTextField.setStyle(null); } catch (NumberFormatExceptionException e) { valueTextvalueTextField.setStyle("-fx-border-color: red;"); } } private void appendToValue2append2ValueText(String s) { if (value2valueText == null) { value2valueText = ""; } value2valueText = value2valueText + s; updateValueField(); } private void performOperationclearValueText() { ifvalueText (value2 != null; } private void convertAndStoreValueText() { double val2memory = Double.valueOf(value2valueText); if (operator != null} private void convertValueTextComputeAndStoreValue() { double value = Double.valueOf(valueText); switch (operator) { case "/": value1memory = value1memory / val2value; break; case "*": value1memory = value1memory * val2value; break; case "+": value1memory = value1memory + val2value; break; case "-": value1memory = value1memory - val2value; break; } } operator = null; } elseprivate void storeOperator(String op) { value1operator = val2op; } }@FXML void handleDigitButton(ActionEvent event) { this.value2Button button = null (Button) event.getSource(); }append2ValueText(button.getText()); updateValueField(); } private @FXML void registerOperatorhandleOperatorButton(StringActionEvent opevent) { performOperation();if (valueText != null) { if (operator != opnull) { convertValueTextComputeAndStoreValue(); updateValueField } else { convertAndStoreValueText(); } } @FXML void digit(ActionEvent event) {clearValueText(); Button button = (Button) event.getSource(); appendToValue2storeOperator(button.getText()); updateValueField(); } @FXML void dividehandleDesimalPoint() { registerOperatorappend2ValueText("/."); } @FXML void multiply() { registerOperator("*" updateValueField(); } @FXML @FXML void addhandleComputeButton() { registerOperator("+"); } @FXML void subtract(if (valueText != null && operator != null) { registerOperatorconvertValueTextComputeAndStoreValue("-"); } @FXML void desimalPoint() { clearValueText(); storeOperator(null); } appendToValue2updateValueField("."); } // manuell redigering av valueTextField @FXML void compute() { performOperation(); void handleValueTextFieldChange(StringProperty prop, String oldValue, String newValue) { if (valueText != null && (! newValue.equals(valueText))) { valueText = newValue; validateValueTextField(); } } } |