Я делаю конвертер и мне нужно, чтобы я выбирал в одном choiceBox одну валюту, в другом другую и курс менялся. Сами choiceBox`ы у меня есть. Есть идеи как можно это реализовать?
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.css.*;
import java.util.Random;
public class Lolita extends Application {
Stage window;
String UAH = "UAH", RUB = "RUB", USD = "USD", EUR = "EUR";
public Label valueFrom1;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Error {
window = primaryStage;
window.setTitle("VALUE");
GridPane gP = new GridPane();
gP.setPadding(new Insets(15, 33, 33, 15));
gP.setVgap(15);
gP.setHgap(20);
TextField valueFrom = new TextField();
valueFrom.setPromptText("Value From");
GridPane.setConstraints(valueFrom, 1, 0);
Random n = new Random();
double y = n.nextDouble()*5;
y = Math.rint(100.0 * y) / 100.0;
Label nameValue3 = new Label("Курс сейчас: ");
Label nameValue4 = new Label(String.valueOf(y));
GridPane.setConstraints(nameValue3, 0, 2);
GridPane.setConstraints(nameValue4, 1, 2);
ChoiceBox<String> choiceBox = new ChoiceBox<>();
choiceBox.getItems().addAll(USD, UAH, EUR, RUB);
choiceBox.getSelectionModel().select(0);
choiceBox.getSelectionModel().selectedItemProperty().addListener(
(v, oldValue, newValue) -> System.out.println("Ваш выбор 1 " + newValue));
GridPane.setConstraints(choiceBox, 0, 0);
ChoiceBox<String> choiceBox2 = new ChoiceBox<>();
choiceBox2.getItems().addAll(USD, UAH, EUR, RUB);
choiceBox2.getSelectionModel().select(0);
choiceBox2.getSelectionModel().selectedItemProperty().addListener(
(v, oldValue, newValue) -> System.out.println("Ваш выбор 2 " + newValue));
GridPane.setConstraints(choiceBox2, 0, 1);
Button choice = new Button("Применить выбор");
choice.setOnAction(e -> {
switch ("UAH"){
case "UAH":
}
});
Button loginButton = new Button("Конвертирование");
double finalY = y;
loginButton.setOnAction(e -> {
try {
double k = finalY;
double v = (Integer.parseInt(String.valueOf(valueFrom.getText())))*k;
double b = v;
Label valueFrom1 = new Label(String.valueOf(b));
this.valueFrom1 = valueFrom1;
GridPane.setConstraints(valueFrom1, 1, 1);
gP.getChildren().add(valueFrom1);
}catch(Exception e1){
System.out.println("Какая-то ошибка, хз");
}catch (Error error) {
System.out.println("Kek");}
});
GridPane.setConstraints(loginButton, 0, 5);
gP.getChildren().addAll(choice, choiceBox, choiceBox2, valueFrom, nameValue3, nameValue4, loginButton);
Scene scene = new Scene(gP, 500, 230);
window.setScene(scene);
window.show();
}
}
Можно составить таблицу с курсом валют;
Например, вида
UAH RUB USD EUR UAH 1 1.5 2 3 RUB 4 1 6 7 USD 8 9 1 11 EUR 12 13 14 1
это можно организовать через двумерный массив (неожиданно)
//список валют, для удобства оформленный в ArrayList
String[] currenciesArray = {UAH, RUB, USD, EUR};
ArrayList<String> currencies = new ArrayList<>(Arrays.asList(currenciesArray));
//собственно, таблица
float[][] exchangeRateTable = {
{1, 1.5f, 2, 3},
{4, 1, 6, 7},
{8, 9, 1, 11},
{12, 13, 14, 1}
};//курс валюты по отношению к самой себе всегда = 1
получить курс таким образом будет довольно несложно:
//при выборе пользователем нового значения..
choiceBox.getSelectionModel().selectedItemProperty().addListener((v, oldValue, newValue) -> {
//..получаем значение соседнего бокса
String anotherSelected = choiceBox2.getSelectionModel().getSelectedItem();
//..получаем порядковые номера валют в таблице
int firstCurrencyIndex = currencies.indexOf(newValue);
int secondCurrencyIndex = currencies.indexOf(anotherSelected);
//..получаем курс для выбранных валют
float exchangeRate = exchangeRateTable[secondCurrencyIndex][firstCurrencyIndex];
//..выводим результат
nameValue3.setText(exchangeRate+"");
});
Виртуальный выделенный сервер (VDS) становится отличным выбором
Начал разбираться в вебсокетами, и пробую написать небольшой чат Ноду особо не знаю, для работы с базой на бекенде php-фреймворк, все запросы...
Я посмотрел не мало примеров как люди используют react js с node express, все сводятся к тому что мне нужно запускать сервер обработчик запросов на одном...