0 / 0 / 0
Регистрация: 07.11.2015
Сообщений: 5
1

Как сохранить число в Double с TextField в JavaFX?

06.03.2017, 18:26. Показов 2936. Ответов 3

Author24 — интернет-сервис помощи студентам
Помогите . Мне нужно что бы данные из TextField height сохранялись в double HEIGHT. Не могу никак это оформить.
Вот код проги.
Спасибо

Вот мой FXML файл
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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>
Main.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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);
    }
}
Controller.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package sample;
 
 
import javafx.fxml.FXML;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.paint.Color;
 
 
 
public class Controller{
    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
    public void printFigure() {
        //COLOR MENUE
        colorMenue.setOnAction(event -> {
            colorIndex =
                    colorMenue.getSelectionModel().getSelectedIndex();
        });
 
        //FIGURES MENUE
        figureMenue.setOnAction(event -> {
            figureIndex = figureMenue.getSelectionModel().getSelectedIndex();
        });
        printFigure(figureIndex);
        System.out.print(HEIGHT);
        System.out.println(height);
    }
 
 
    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());
    }
 
   void getHeight(String string){
       HEIGHT = Double.parseDouble(string);
 
   }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2017, 18:26
Ответы с готовыми решениями:

Как рисовать поверх компонент TextField JavaFX
Всем привет, не могу понят как можно рисовать поверх компонент, какой метод переопределить?...

JavaFX + Scene Builder как получить значение с TextField
Я только начинаю учить javaFX, поэтому, может это и глупый вопрос, но я запутался. Приложение...

Как в javaFX запретить ввод в TextField символов кроме цифр и точки?
в javaFX сделать запрет на ввод символов кроме цифр и точки пишу такой код: ...

Group и TextField JavaFX
Как можно сделать, чтобы Group (кнопка для удаления текста) исчезала, когда фокус перемещался на...

3
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
07.03.2017, 00:31 2
ты забыл для своего textField'а в fxml файле установить fx:id="height"... да и для второго тоже.
пусть данные сохранятся в HEIGHT после нажатия Enter. Добавляем в Controller след. метод
Java
1
2
3
public void initialize() {
    height.setOnAction(event -> HEIGHT = Double.parseDouble(height.getText()));
}
само собой добавив ограничения на ввод или обернув в try {HEIGHT = ...

или

в fxml в параметры тега textField добавить onAction
XML
1
<TextField onAction="#heightAction" layoutX="32.0" layoutY="188.0" prefHeight="26.0" prefWidth="69.0" text="HEIGHT" />
и определить метод в Controller'е
Java
1
2
3
public void heightAction(ActionEvent event) {
    HEIGHT = Double.parseDouble( ((TextField) event.getSource()).getText() );
}
0
0 / 0 / 0
Регистрация: 07.11.2015
Сообщений: 5
07.03.2017, 15:52  [ТС] 3
Я сделал что бы при нажатие на кнопку button даные сохранялись в HEIGHT.
Но оно пишет ерор и соответствено HEIGHT = 0.0
Java
1
2
3
4
5
6
7
try {
           HEIGHT = Double.parseDouble(height.getText());
        }catch(NullPointerException e) {
            System.out.println("eror");
 
        }
        System.out.println(HEIGHT);
0
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
08.03.2017, 12:21 4
раз у тебя срабатывает NullPointerException, а вызвать его некому кроме как height, то скажу еще раз
Цитата Сообщение от Kadota Посмотреть сообщение
ты забыл для своего textField'а в fxml файле установить fx:id="height"... да и для второго тоже.
т.е. просто допиши fx:id="height"
XML
1
<TextField fx:id="height" layoutX="32.0" layoutY="188.0" prefHeight="26.0" prefWidth="69.0" text="HEIGHT" />
Добавлено через 12 минут
ах да, и убери атрибут static у объектов из fxml, из-за него тоже выбрасывается исключение
если нужно чтобы объект был статическим, то как вариант создай новую статическую ссылку, присвой ей height и работай с ней
Java
1
2
3
4
5
6
7
@FXML TextField height;
 
public static TextField stHeight;
 
public void initialize() {
    stHeight = height;
}
0
08.03.2017, 12:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2017, 12:21
Помогаю со студенческими работами здесь

JavaFX установить прослушку снятия выделения TextField
Имеется TextField в HBox, HBox находится в AnchorPane. Когда TextField выделен...

Как сохранить введенные данные пользователя в поле TextField нажатием клавиши «done» на клавиатуре?
Всем привет! Помогите решить проблему. Есть поле UITextField, пользователь вводит в него текст и...

Как сгенерировать случайное число типа я double имея на входе 2 числа типа double - минимальное и максимальное
Например: public class ExtendedRandom : Random { public ExtendedRandom() ...

Получить из Textfield1 число и из Textfield число. И вывести их на экран
Здравствуйте.Я новичок, подскажите пожалуйста. имеется код private void...

Как из 4-х байт, составляющих число типа double, получить это число?
Как из 4-х байт, составляющих число типа double, получить это число? Пример: unsigned char...

Как получить данные из TextField и наоборот вывести данные в TextField?
Учусь javafx и scene builder нужно ввести некоторые данные сделать с ними пару действий и вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru