Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
collapsetrue
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();
		}
	}
}