Нужно сохранить число c TextField (JavaFX) в переменную (double)

458
07 марта 2017, 14:19

Есть TextField и есть переменная, как счидать даные с TextField? Какой handler использовать или это делаться? Нигде не могу найти пример . В какую функию нужно вставлть handler . Знаю что нужно

double i = Double.perseDouble(text.getText());

Но где и как , с этим траблы. Буду очень благодарный

Хочу что бы Height, Weight задавал пользователь Код

Controller.java

package sample;


import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.paint.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class Controller implements ActionListener{
    private static Color colorOfFigure;
    private static int colorIndex, figureIndex;
    private static double HEIGHT = 30;
    private static int WEIGHT = 50;

    @FXML
    public static TextField height;
    @FXML
    private static TextField weight;
    @FXML
    private ComboBox<String> colorMenue;
    @FXML
    private ComboBox<String> figureMenue;
    @FXML
    private Canvas myCanvas;
    GraphicsContext gc;
    @FXML
    Button go;

    @FXML
    public void printFigure() {
        //COLOR MENUE
        colorMenue.setOnAction(event -> {
            colorIndex =
                    colorMenue.getSelectionModel().getSelectedIndex();
        });
        //FIGURES MENUE
        figureMenue.setOnAction(event -> {
            figureIndex = figureMenue.getSelectionModel().getSelectedIndex();
        });
        printFigure(figureIndex);
        }


    public Color switchColor(int i) {
        switch (i) {
            case 0:
                colorOfFigure = Color.YELLOW;
                break;
            case 1:
                colorOfFigure = Color.GREEN;
                break;
            case 2:
                colorOfFigure = Color.BLACK;
                break;
            case 3:
                colorOfFigure = Color.RED;
                break;
            case 4:
                colorOfFigure = Color.BLUE;
                break;
        }
        return colorOfFigure;
    }
    void printFigure(int figureIndex) {
        gc = myCanvas.getGraphicsContext2D();
        gc.setFill(switchColor(colorIndex));
        gc.setStroke(switchColor(colorIndex));
        switch (figureIndex) {
            case 0:
                gc.strokeLine(0, 0, 187, 160);
                break;
            case 1:
                gc.fillRoundRect(110, 60, 30, 30, 10, 10);
                break;
            case 2:
                gc.fillRect(187, 160, 100, 100);
                break;
            case 3:
                gc.fillPolygon(new double[]{10, 30, 10},
                        new double[]{210, 210, 240, 240,}, 4);
            case 4:
                gc.fillOval(187, 160, 100, 100);
                break;
        }
    }
    @FXML
    public void cleanCanvas() {
        gc.setFill(Color.LAVENDER);
        gc.fillRect(0, 0, myCanvas.getWidth(), myCanvas.getHeight());
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        height.setOnKeyPressed(new EventHandler<javafx.scene.input.KeyEvent>() {
            @Override
            public void handle(javafx.scene.input.KeyEvent e) {
                if(e.getCode() == KeyCode.ENTER){
                    System.out.println(height.getText());
                }
            }
        });
    }
}

Main.java

package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    private Stage stage;
    @Override
    public void start(Stage stage) throws Exception{
        this.stage = stage;
        Parent root = FXMLLoader.load(getClass().getResource("printFiguresUI.fxml"));
        stage.setTitle("Print Figure | by marchenko BIT1-15");
        stage.setScene(new Scene(root, 700, 400));
        stage.show();
        }



    public static void main(String[] args) {
        launch(args);
    }
}

printFigureUI.fxml

<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.String?>
<?import javafx.collections.FXCollections?>
<?import javafx.scene.canvas.Canvas?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" prefHeight="400.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <children>
      <Button layoutX="26.0" layoutY="306.0" mnemonicParsing="false" onAction="#printFigure" prefHeight="26.0" prefWidth="158.0" text="print" />
      <ComboBox fx:id="figureMenue" layoutX="34.0" layoutY="52.0" prefWidth="150.0" promptText="            none">
      <items>
         <FXCollections fx:factory="observableArrayList">
            <String fx:value="Apple" />
            <String fx:value="Orange" />
            <String fx:value="Pear" />
            <String fx:value="Triq" />
         </FXCollections>
      </items>
      </ComboBox>
      <Label layoutX="34.0" layoutY="26.0" text="Choose the figure" />
      <ComboBox fx:id="colorMenue" layoutX="34.0" layoutY="135.0" prefWidth="150.0" promptText="            none">
      <items>
         <FXCollections fx:factory="observableArrayList">
            <String fx:value="Yellow" />
            <String fx:value="Green" />
            <String fx:value="Black" />
            <String fx:value="Red" />
            <String fx:value="Blue" />
         </FXCollections>
      </items>
   </ComboBox>
      <Label layoutX="34.0" layoutY="111.0" text="Choose the color" />
      <Canvas fx:id="myCanvas" height="400.0" layoutX="209.0" layoutY="2.0" width="499.0" />
      <Separator layoutX="206.0" layoutY="-11.0" orientation="VERTICAL" prefHeight="365.0" prefWidth="6.0" />
      <Label layoutX="71.0" layoutY="164.0" text="figure's size" />
      <Button layoutX="26.0" layoutY="341.0" mnemonicParsing="false" onAction="#cleanCanvas" prefHeight="25.0" prefWidth="158.0" text="clean" textFill="#f20000" />
      <TextField layoutX="32.0" layoutY="188.0" prefHeight="26.0" prefWidth="69.0" text="HEIGHT" />
      <TextField layoutX="115.0" layoutY="188.0" prefHeight="26.0" prefWidth="69.0" text="WEIGHT" />
      <TextField alignment="CENTER" layoutX="30.0" layoutY="257.0" prefHeight="26.0" prefWidth="69.0" text="X" />
      <TextField alignment="CENTER" layoutX="118.0" layoutY="256.0" prefHeight="26.0" prefWidth="69.0" text="Y" />
      <Label layoutX="50.0" layoutY="235.0" text="figure's position" />
   </children>
</AnchorPane>
READ ALSO
FileNotFoundException при открытии файла из assets

FileNotFoundException при открытии файла из assets

Почему появляется эта ошибка, если файл существует?

291
выравнивание блока по центру

выравнивание блока по центру

Помогите, пожалуйста, что-то всю голову сломал, без текста получается все ровно, но если добавить текст в блок, то ерунда полнаяИмеется следующая...

317
Как грамотно подойти к верстке сайта чтобы в дальнейшем было легко его масштабировать?

Как грамотно подойти к верстке сайта чтобы в дальнейшем было легко его масштабировать?

Здравствуйте, собираюсь разрабатывать большой web проект городской, с большим количеством функционала, но на первой стадии буду делать только...

205
Как сделать овальную форму подписки?

Как сделать овальную форму подписки?

Как сделать форму подписки такого плана?!

232