Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/47: Рейтинг темы: голосов - 47, средняя оценка - 4.83
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
1

TableView Получить значения из ячеек в таблице, и присвоить эти значения переменным, а потом получить их сумму

18.04.2017, 23:38. Показов 8958. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код таблицы из примера с оф сайта docs.oracle

как можно получить и присвоить переменной цифровое значение введенное в одну из ячеек
если все данные содержатся в кавычках
Java
1
2
3
4
5
6
           FXCollections.observableArrayList(
            new Person("Jacob", "Smith", "jacob.smith@example.com"),
            new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
            new Person("Ethan", "Williams", "ethan.williams@example.com"),
            new Person("Emma", "Jones", "emma.jones@example.com"),
            new Person("Michael", "Brown", "michael.brown@example.com"));
а потом этой ячейке присвоить метод

Java
1
2
3
  .setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
} });
чтобы при вводе других значений можно было производить сумму или еще какие-то арифметические операции над ячейками таблице

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class TableViewSample extends Application {
 
    private TableView<Person> table = new TableView<Person>();
    private final ObservableList<Person> data =
            FXCollections.observableArrayList(
            new Person("Jacob", "Smith", "jacob.smith@example.com"),
            new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
            new Person("Ethan", "Williams", "ethan.williams@example.com"),
            new Person("Emma", "Jones", "emma.jones@example.com"),
            new Person("Michael", "Brown", "michael.brown@example.com"));
    final HBox hb = new HBox();
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group());
        stage.setTitle("Table View Sample");
        stage.setWidth(450);
        stage.setHeight(550);
 
        final Label label = new Label("Address Book");
        label.setFont(new Font("Arial", 20));
 
        table.setEditable(true);
 
        TableColumn firstNameCol = new TableColumn("First Name");
        firstNameCol.setMinWidth(100);
        firstNameCol.setCellValueFactory(
            new PropertyValueFactory<Person, String>("firstName"));
        firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        firstNameCol.setOnEditCommit(
            new EventHandler<CellEditEvent<Person, String>>() {
                @Override
                public void handle(CellEditEvent<Person, String> t) {
                    ((Person) t.getTableView().getItems().get(
                            t.getTablePosition().getRow())
                            ).setFirstName(t.getNewValue());
                }
            }
        );
 
 
        TableColumn lastNameCol = new TableColumn("Last Name");
        lastNameCol.setMinWidth(100);
        lastNameCol.setCellValueFactory(
            new PropertyValueFactory<Person, String>("lastName"));
        lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
        lastNameCol.setOnEditCommit(
            new EventHandler<CellEditEvent<Person, String>>() {
                @Override
                public void handle(CellEditEvent<Person, String> t) {
                    ((Person) t.getTableView().getItems().get(
                        t.getTablePosition().getRow())
                        ).setLastName(t.getNewValue());
                }
            }
        );
 
        TableColumn emailCol = new TableColumn("Email");
        emailCol.setMinWidth(200);
        emailCol.setCellValueFactory(
            new PropertyValueFactory<Person, String>("email"));
        emailCol.setCellFactory(TextFieldTableCell.forTableColumn());
        emailCol.setOnEditCommit(
            new EventHandler<CellEditEvent<Person, String>>() {
                @Override
                public void handle(CellEditEvent<Person, String> t) {
                    ((Person) t.getTableView().getItems().get(
                        t.getTablePosition().getRow())
                        ).setEmail(t.getNewValue());
                }
            }
        );
 
        table.setItems(data);
        table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
 
        final TextField addFirstName = new TextField();
        addFirstName.setPromptText("First Name");
        addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
        final TextField addLastName = new TextField();
        addLastName.setMaxWidth(lastNameCol.getPrefWidth());
        addLastName.setPromptText("Last Name");
        final TextField addEmail = new TextField();
        addEmail.setMaxWidth(emailCol.getPrefWidth());
        addEmail.setPromptText("Email");
 
        final Button addButton = new Button("Add");
        addButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                data.add(new Person(
                        addFirstName.getText(),
                        addLastName.getText(),
                        addEmail.getText()));
                addFirstName.clear();
                addLastName.clear();
                addEmail.clear();
            }
        });
 
        hb.getChildren().addAll(addFirstName, addLastName, addEmail, addButton);
        hb.setSpacing(3);
 
        final VBox vbox = new VBox();
        vbox.setSpacing(5);
        vbox.setPadding(new Insets(10, 0, 0, 10));
        vbox.getChildren().addAll(label, table, hb);
 
        ((Group) scene.getRoot()).getChildren().addAll(vbox);
 
        stage.setScene(scene);
        stage.show();
    }
 
    public static class Person {
 
        private final SimpleStringProperty firstName;
        private final SimpleStringProperty lastName;
        private final SimpleStringProperty email;
 
        private Person(String fName, String lName, String email) {
            this.firstName = new SimpleStringProperty(fName);
            this.lastName = new SimpleStringProperty(lName);
            this.email = new SimpleStringProperty(email);
        }
 
        public String getFirstName() {
            return firstName.get();
        }
 
        public void setFirstName(String fName) {
            firstName.set(fName);
        }
 
        public String getLastName() {
            return lastName.get();
        }
 
        public void setLastName(String fName) {
            lastName.set(fName);
        }
 
        public String getEmail() {
            return email.get();
        }
 
        public void setEmail(String fName) {
            email.set(fName);
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2017, 23:38
Ответы с готовыми решениями:

Если значения переменных не равны то присвоить каждой сумму их значений, иначе присвоить переменным нулевые значения
uses crt; var x: integer; f1,f2: text; begin clrscr; assign(f1,'ishod.txt'); ...

Присвоить переменным значения ячеек таблицы
Помогите плиз: как сделать так чтобы из таблицы fight в строчке где ид=$юзер находились столбцы...

Получить значения всех сосдених ячеек и вывестиих значения в форму
Всем привет! Есть такая таблица: &lt;table border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;3&quot;&gt; &lt;tbody&gt; ...

Как присвоить значения переменным, взяв значения из другого файла
Добрый день. Имеется файл 1.php с содержимым всего из трех чисел через запятую 1721,17116,1703...

11
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
19.04.2017, 15:38 2
что-то вроде этого?
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.converter.IntegerStringConverter;
 
public class Cl extends Application {
 
    private final ObservableList<Sum> data = FXCollections.observableArrayList(
            new Sum(1, 2));
    private TableView<Sum> table = new TableView<>();
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(new Group(), 500, 500);
 
        table.setEditable(true);
 
        TableColumn aColumn = new TableColumn("A");
        aColumn.setMinWidth(100);
        aColumn.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("a"));
        aColumn.setCellFactory(TextFieldTableCell.forTableColumn(new IntegerStringConverter()));
        aColumn.setOnEditCommit(new EventHandler<CellEditEvent<Sum, Integer>>() {
                                    @Override
                                    public void handle(CellEditEvent<Sum, Integer> t) {
                                        t.getTableView().getItems().get(t.getTablePosition().getRow()).setA(t.getNewValue());
                                        table.refresh();
                                    }
                                }
        );
 
 
        TableColumn bColumn = new TableColumn("B");
        bColumn.setMinWidth(100);
        bColumn.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("b"));
        bColumn.setCellFactory(TextFieldTableCell.forTableColumn(new IntegerStringConverter()));
        bColumn.setOnEditCommit(new EventHandler<CellEditEvent<Sum, Integer>>() {
                                    @Override
                                    public void handle(CellEditEvent<Sum, Integer> t) {
                                        t.getTableView().getItems().get(t.getTablePosition().getRow()).setB(t.getNewValue());
                                        table.refresh();
                                    }
                                }
        );
 
        TableColumn resColumn = new TableColumn("Sum");
        resColumn.setEditable(false);
        resColumn.setMinWidth(200);
        resColumn.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("result"));
 
        table.setItems(data);
        table.getColumns().addAll(aColumn, bColumn, resColumn);
 
        final TextField addFirstNumber = new TextField();
        addFirstNumber.setPromptText("First Number");
        final TextField addSecondNumber = new TextField();
        addSecondNumber.setPromptText("Second Number");
 
        final Button addButton = new Button("Add");
        addButton.setOnAction(e -> {
            data.add(new Sum(
                    Integer.parseInt(addFirstNumber.getText()),
                    Integer.parseInt(addSecondNumber.getText())));
            addFirstNumber.clear();
            addSecondNumber.clear();
        });
 
        final HBox hb = new HBox(5, addFirstNumber, addSecondNumber, addButton);
 
        final VBox vbox = new VBox(5, table, hb);
        vbox.setPadding(new Insets(10, 0, 0, 10));
 
        ((Group) scene.getRoot()).getChildren().addAll(vbox);
 
        stage.setScene(scene);
        stage.show();
    }
 
    public static class Sum {
 
        private final SimpleIntegerProperty a;
        private final SimpleIntegerProperty b;
        private final SimpleIntegerProperty result;
 
        private Sum(int a, int b) {
            this.a = new SimpleIntegerProperty(a);
            this.b = new SimpleIntegerProperty(b);
            this.result = new SimpleIntegerProperty(a + b);
        }
 
        public int getA() {
            return a.get();
        }
 
        public void setA(int a) {
            this.a.set(a);
            this.result.set(a + b.get());
        }
 
        public int getB() {
            return b.get();
        }
 
        public void setB(int b) {
            this.b.set(b);
            result.set(a.get() + b);
        }
 
        public int getResult() {
            return result.get();
        }
 
    }
}
1
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
19.04.2017, 18:50  [ТС] 3
нет я рассчитывал на немного другое

вот пример:
у меня есть некоторый класс "v" который делает вычисления значений vA и vB.
вычисления происходит по формулам где используются переменные v1-v4.
значения переменных v1-v4 берутся из соответствующих текстовых полей v1TextField-v2TextField
на скрине результат компиляции, где все представлено в виде меток и текстовых полей.
А мне бы хотелось все это представить в виде таблицы.

в TextField удобно то что, я указал класс v(); и при вводе значений все считается
а для таблиц я смотрю необходимо использовать коллекции, если надо суммировать значит коллекция Sum
а у меня в классе и сумма и вычитание, деление умножение потом опять сумма, это же сколько надо коллекций применить
может можно вместо коллекции указать просто класс в котором делаются вычисления и все на этом

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
import javafx.application.*;
import javafx.application.Application;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.scene.effect.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.scene.text.*;
import javafx.geometry.*;
import javafx.event.*;
import javafx.scene.canvas.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.Cursor;
import java.awt.event.InputEvent;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.shape.*;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Translate;
import javafx.scene.Group;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.event.EventHandler;
import javafx.scene.input.InputEvent.*;
import javafx.scene.Node;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.PerspectiveTransform;
import javafx.stage.Stage; 
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.scene.input.KeyEvent; // пакет обработки нажатий с клавы javafx
import javafx.util.converter.*;
import javafx.scene.input.*;
import java.util.Scanner;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.file.*;
import java.net.*;
import java.text.*;
import javafx.util.*;
import java.util.regex.Pattern;
import javafx.fxml.FXML;
import javafx.scene.canvas.*;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.geometry.Insets;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.scene.Cursor;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Tooltip;
import javafx.scene.image.Image;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.AnchorPane;
import javafx.scene.media.AudioClip;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import java.time.LocalDate;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.text.Text.*;
 
 
 
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
 
public class ex extends Application {
double v1=1;
double v2=2;
double v3=3;
double v4=4;
double vA;
double vB;
 
String v1str;
double v1do;
String v2str;
double v2do;
String v3str;
double v3do;
String v4str;
double v4do;
 
TextField v1TextField;
TextField v2TextField;
TextField v3TextField;
TextField v4TextField;
Label vALabel;
Label vBLabel;
 
public void v() {
vA= (v1 * v2 * (v3-(v4+v2) +v2 / 2)) / v3 + 5;     // значение vA
vB= (v1 * v2 * (v4+v2 / 2)) / v4 + 8;              // значение vB
vALabel.setText("Значение vA = " +vA);
vBLabel.setText("Значение vB = " +vB);
}
 
public static void main(String[] args) {
launch(args);
}
 
 
public void start(Stage myStage) throws Exception {
myStage.setTitle("Title");
AnchorPane rootPane = new AnchorPane();
Scene myScene = new Scene(rootPane, 700, 400);
myStage.setScene(myScene);
 
Label v1Label = new Label("Значение v1 = ");
Label v2Label = new Label("Значение v2 = ");
Label v3Label = new Label("Значение v3 = ");
Label v4Label = new Label("Значение v4 = ");
vALabel = new Label("Значение vA = " +vA);
vBLabel = new Label("Значение vB = " +vB);
 
v1TextField = new TextField();
v2TextField = new TextField();
v3TextField = new TextField();
v4TextField = new TextField();
 
 
v1TextField.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String v1str = v1TextField.getText();
Double v1do = Double.valueOf(v1str);
v1 = v1do;
v();
} });
v2TextField.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String v2str = v2TextField.getText();
Double v2do = Double.valueOf(v2str);
v2 = v2do;
v();
} });
v3TextField.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String v3str = v3TextField.getText();
Double v3do = Double.valueOf(v3str);
v3 = v3do;
v();
} });
v4TextField.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String v4str = v4TextField.getText();
Double v4do = Double.valueOf(v4str);
v4 = v4do;
v();
} });
 
 
AnchorPane.setLeftAnchor(v1Label, 10.0);
AnchorPane.setTopAnchor(v1Label, 50.0);
AnchorPane.setLeftAnchor(v2Label, 10.0);
AnchorPane.setTopAnchor(v2Label, 80.0);
AnchorPane.setLeftAnchor(v3Label, 10.0);
AnchorPane.setTopAnchor(v3Label, 110.0);
AnchorPane.setLeftAnchor(v4Label, 10.0);
AnchorPane.setTopAnchor(v4Label, 140.0);
AnchorPane.setLeftAnchor(vALabel, 230.0);
AnchorPane.setTopAnchor(vALabel, 190.0);
AnchorPane.setLeftAnchor(vBLabel, 230.0);
AnchorPane.setTopAnchor(vBLabel, 210.0);
 
AnchorPane.setLeftAnchor(v1TextField, 100.0);
AnchorPane.setTopAnchor(v1TextField, 50.0);
AnchorPane.setLeftAnchor(v2TextField, 100.0);
AnchorPane.setTopAnchor(v2TextField, 80.0);
AnchorPane.setLeftAnchor(v3TextField, 100.0);
AnchorPane.setTopAnchor(v3TextField, 110.0);
AnchorPane.setLeftAnchor(v4TextField, 100.0);
AnchorPane.setTopAnchor(v4TextField, 140.0);
 
rootPane.getChildren().addAll(v1Label, v2Label, v3Label, v4Label, vALabel, vBLabel);
rootPane.getChildren().addAll(v1TextField, v2TextField, v3TextField, v4TextField);
myStage.show();
}
}
однако спасибо за ответ, есть над чем думать
Миниатюры
TableView Получить значения из ячеек в таблице, и присвоить эти значения переменным, а потом получить их сумму  
0
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
20.04.2017, 11:24  [ТС] 4
Можете мне подсказать откуда у меня вторая левая пустая колонка взялась
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
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class tab extends Application {
 
private TableView<Sum> table = new TableView<Sum>();
private final ObservableList<Sum> data =
FXCollections.observableArrayList(
new Sum("Значение v1 = ")         );
   
public static void main(String[] args) {
launch(args);  }
 
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(450);
stage.setHeight(500);
 
table.setEditable(true);
 
TableColumn aCol = new TableColumn("Значение ");
aCol.setMinWidth(100);
aCol.setCellValueFactory(
new PropertyValueFactory<Sum, String>("avSTR"));
 
table.setItems(data);
table.getColumns().addAll(aCol);
 
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(table);
 
((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene);
stage.show();
}
 
public static class Sum {
 
private final SimpleStringProperty avSTR;
 
private Sum(String a) {
this.avSTR = new SimpleStringProperty(a);
}
 
public String getAvSTR() {
return avSTR.get();
}
 
public void setAvSTR(String a) {
avSTR.set(a);
}
}
}
0
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
20.04.2017, 13:24 5
там нет второй колонки, это просто оставшееся место в TableView после первой колонки
если хочешь чтобы места не оставалось и колонки заполняли TableView, то
Java
1
        table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
1
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
20.04.2017, 15:17  [ТС] 6
А как можно сделать центрирование текста в ячейке, и увеличить черноту линий ячеек, у меня на новом мониторе SAMSUNG линий вообще не видать, вот кстати на старом мониторе BENQ все четко видно, а я еще думал что мой монитор BENQ плохой его пора менять, а оказывается нет еще не пора менять
Миниатюры
TableView Получить значения из ячеек в таблице, и присвоить эти значения переменным, а потом получить их сумму  
0
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
20.04.2017, 16:22 7
как то так
CSS
1
2
3
4
5
6
7
8
9
10
.table-view {
    -fx-table-header-border-color: black;
    -fx-table-cell-border-color: black;
}
.table-cell {
    -fx-alignment: center;
}
.table-view .column-header {
    -fx-border-color: transparent black transparent transparent;
}
1
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
20.04.2017, 19:11  [ТС] 8
Немогу понять почему при вводе значений в таблицу считает не тогда когда нажать на Enter, а тогда когда мышь кликнуть по соседней строке там где должен быть результат, и куда css вставить тоже не могу разобраться
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.scene.layout.AnchorPane;
import javafx.util.converter.IntegerStringConverter;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.TableColumn.CellEditEvent;
 
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class tab extends Application {
 
TableView<Sum> table = new TableView<Sum>();
private final ObservableList<Sum> data =
FXCollections.observableArrayList(
new Sum("Значение v1 = ", 1),
new Sum("Значение v2 = ", 1),
new Sum("Значение v3 = ", 1),
new Sum("Значение v4 = ", 1)     );
   
public static void main(String[] args) {
launch(args);  }
 
@Override
public void start(Stage stage) {
stage.setTitle("Table View Sample");
AnchorPane rootTAB = new AnchorPane();
Scene scene = new Scene(rootTAB, 400, 700);
stage.setScene(scene);
stage.setWidth(450);
stage.setHeight(500);
 
table.setEditable(true);
TableColumn aCol = new TableColumn("Переменная ");
aCol.setMinWidth(120);
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
aCol.setCellValueFactory(new PropertyValueFactory<Sum, String>("avSTR"));
/*
редактирование переменной тип String
aCol.setCellFactory(TextFieldTableCell.forTableColumn());
aCol.setOnEditCommit(
new EventHandler<CellEditEvent<Sum, String>>() {
@Override
public void handle(CellEditEvent<Sum, String> t) {
((Sum) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setAvSTR(t.getNewValue());
} } );    */
 
 
TableColumn bCol = new TableColumn("Значение ");
bCol.setMinWidth(78);
bCol.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("znavSTR"));
// редактирование переменной тип Integer для Int
bCol.setCellFactory(TextFieldTableCell.forTableColumn(new IntegerStringConverter()));
bCol.setOnEditCommit(
new EventHandler<CellEditEvent<Sum, Integer>>() {
@Override
public void handle(CellEditEvent<Sum, Integer> t) {
((Sum) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setZnavSTR(t.getNewValue());
} } );
 
TableColumn rezyltCol = new TableColumn("Результат ");
rezyltCol.setMinWidth(50);
rezyltCol.setMaxWidth(50);
rezyltCol.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("result"));
 
 
 
table.setPrefWidth(270);
table.setPrefHeight(200);
table.setItems(data);
table.getColumns().addAll(aCol, bCol, rezyltCol);
 
 
/*
при компиляции неведомые ошибки
table.table-view {
    -fx-table-header-border-color: black;
    -fx-table-cell-border-color: black;
}
table.table-cell {
    -fx-alignment: center;
}
table.table-view .column-header {
    -fx-border-color: transparent black transparent transparent;
} */
 
AnchorPane.setLeftAnchor(table, 10.0);
AnchorPane.setTopAnchor(table, 14.0);
rootTAB.getChildren().addAll(table);
stage.show();
}
 
public static class Sum {
 
private final SimpleStringProperty avSTR;
private final SimpleIntegerProperty znavSTR;
private final SimpleIntegerProperty result;
 
private Sum(String a, int v2) {
this.avSTR = new SimpleStringProperty(a);
this.znavSTR = new SimpleIntegerProperty(v2);
this.result = new SimpleIntegerProperty(v2 + 1);
}
public String getAvSTR() {
return avSTR.get();
}
public void setAvSTR(String a) {
avSTR.set(a);
}
 
public int getZnavSTR() {
return znavSTR.get();
}
public void setZnavSTR(int v2) {
this.znavSTR.set(v2);
result.set(znavSTR.get() + 5); 
  }
 
public int getResult() {
return result.get();
   }
 
}
}
Добавлено через 7 минут
и еще не могу понять мне чтобы найти результат вычислений vA= (v1 * v2 * (v3-(v4+v2) +v2 / 2)) / v3 + 5; нужно создавать столбцы v1, v2, v3, v4 , а если значения этих переменных будут записаны в один столбец
то как?
0
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
20.04.2017, 19:43 9
Цитата Сообщение от Andrec Посмотреть сообщение
Немогу понять почему при вводе значений в таблицу считает не тогда когда нажать на Enter, а тогда когда мышь кликнуть по соседней строке там где должен быть результат
ты же закомментировал кусок кода, который отвечает за редактирование ячейки
Цитата Сообщение от Andrec Посмотреть сообщение
/*
редактирование переменной тип String
aCol.setCellFactory(TextFieldTableCell.forTableColumn());
aCol.setOnEditCommit(
new EventHandler<CellEditEvent<Sum, String>>() {
@Override
public void handle(CellEditEvent<Sum, String> t) {
((Sum) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setAvSTR(t.getNewValue());
} } ); * **/
раскомментируй и будет работать
Цитата Сообщение от Andrec Посмотреть сообщение
куда css вставить
нужно создать новый файл с расширением css, например style.css в той же папке и
Java
1
rootTAB.getStylesheets().add(getClass().getResource("style.css").toString());
Добавлено через 2 минуты
Цитата Сообщение от Andrec Посмотреть сообщение
а если значения этих переменных будут записаны в один столбец
нужно будет как-нибудь вытащить их из этого столбца и разделить на v1, v2, v3, v4, мелочи, в остальном все то же самое
0
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
20.04.2017, 19:50  [ТС] 10
а там редактирование для текстовой строки "Значение v1=", я это закомментировал потому что пока не надо, но чтобы рабочий код не потерялся когда в другом коде понадобится
а все значения переменных записаны в среднем столбце, к ним при первом вызове прибавляется 1, при вводе цифр прибавляется 5, я так разделил чтобы лучше видеть где ошибка, и вот когда в средний столбец ввожу цифру жму ентр ни чего не работает а должно прибавится 5 и вывести результат, а если нажал enter и щелкнуть мышью по соседней ячейке тогда прибавится 5
Миниатюры
TableView Получить значения из ячеек в таблице, и присвоить эти значения переменным, а потом получить их сумму  
0
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
20.04.2017, 19:53 11
Лучший ответ Сообщение было отмечено Andrec как решение

Решение

тогда добавь table.refresh()
Java
1
2
3
4
5
6
7
8
9
10
bCol.setOnEditCommit(
                new EventHandler<CellEditEvent<Sum, Integer>>() {
                    @Override
                    public void handle(CellEditEvent<Sum, Integer> t) {
                        ((Sum) t.getTableView().getItems().get(
                                t.getTablePosition().getRow())
                        ).setZnavSTR(t.getNewValue());
                        table.refresh();
                    }
                });
1
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
20.04.2017, 22:12  [ТС] 12
ула ула ула-ла заработала!!!

Добавлено через 2 часа 11 минут
Как можно редактировать помещенное в ячейку таблицы текстовое поле

TextField помещен в первую ячейку таблицы, если начать вводить значения в ячейку, то будет редактироваться ячейка и соответсвенно TextField уже там не будет, а нужно сделать ввод значений в TextField, который находится в ячейке, а сама ячейка ни-ни

Java
1
2
3
4
5
6
final ObservableList<Sum> data =
FXCollections.observableArrayList(
new Sum("t" +SHAGTextField, 1),
new Sum("Значение v2 = ", 1),
new Sum("Значение v3 = ", 1),
new Sum("Значение v4 = ", 1)     );
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.scene.layout.AnchorPane;
import javafx.util.converter.IntegerStringConverter;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.TableColumn.CellEditEvent;
import java.awt.event.InputEvent;
import javafx.scene.input.KeyEvent;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class tab extends Application {
 
TextField SHAGTextField;
Label v1Label;
 
TableView<Sum> table = new TableView<Sum>();
final ObservableList<Sum> data =
FXCollections.observableArrayList(
new Sum("t" +SHAGTextField, 1),
new Sum("Значение v2 = ", 1),
new Sum("Значение v3 = ", 1),
new Sum("Значение v4 = ", 1)     );
   
public static void main(String[] args) {
launch(args);  }
 
@Override
public void start(Stage stage) {
stage.setTitle("Table View Sample");
AnchorPane rootTAB = new AnchorPane();
// rootTAB.getStylesheets().add(getClass().getResource("styleTAB.css").toString());
Scene scene = new Scene(rootTAB, 400, 700);
stage.setScene(scene);
stage.setWidth(450);
stage.setHeight(500);
 
 
 
 
table.setEditable(true);
TableColumn aCol = new TableColumn("Переменная ");
aCol.setMinWidth(90);
aCol.setMinWidth(110);
// table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
aCol.setCellValueFactory(new PropertyValueFactory<Sum, String>("avSTR"));
 
// редактирование переменной тип String
aCol.setCellFactory(TextFieldTableCell.forTableColumn());
aCol.setOnEditCommit(
new EventHandler<CellEditEvent<Sum, String>>() {
@Override
public void handle(CellEditEvent<Sum, String> t) {
((Sum) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setAvSTR(t.getNewValue());
} } );   /*  */
 
v1Label = new Label("Значение v1 = ");
SHAGTextField = new TextField("10");
 
SHAGTextField.setOnKeyReleased(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
String SHAGstr = SHAGTextField.getText();
double SHAGdo = Double.valueOf(SHAGstr);
double SHAGik = SHAGdo + 100;
v1Label.setText("Значение vA = " +SHAGik);
} });
 
 
TableColumn bCol = new TableColumn("Значение ");
bCol.setMinWidth(48);
bCol.setMaxWidth(78);
bCol.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("znavSTR"));
// редактирование переменной тип Integer для int
bCol.setCellFactory(TextFieldTableCell.forTableColumn(new IntegerStringConverter()));
bCol.setOnEditCommit(
new EventHandler<CellEditEvent<Sum, Integer>>() {
@Override
public void handle(CellEditEvent<Sum, Integer> t) {
((Sum) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setZnavSTR(t.getNewValue());
table.refresh();
} } );
 
TableColumn rezyltCol = new TableColumn("Результат ");
rezyltCol.setMinWidth(50);
rezyltCol.setMaxWidth(90);
rezyltCol.setCellValueFactory(new PropertyValueFactory<Sum, Integer>("result"));
 
table.setPrefWidth(270);
table.setPrefHeight(200);
table.setItems(data);
table.getColumns().addAll(aCol, bCol, rezyltCol);
 
 
AnchorPane.setLeftAnchor(v1Label, 230.0);
AnchorPane.setTopAnchor(v1Label, 220.0);
 
AnchorPane.setLeftAnchor(table, 10.0);
AnchorPane.setTopAnchor(table, 14.0);
rootTAB.getChildren().addAll(table, v1Label);
stage.show();
}
 
public static class Sum {
 
private final SimpleStringProperty avSTR;
private final SimpleIntegerProperty znavSTR;
private final SimpleIntegerProperty result;
 
private Sum(String a, int v2) {
this.avSTR = new SimpleStringProperty(a);
this.znavSTR = new SimpleIntegerProperty(v2);
this.result = new SimpleIntegerProperty(v2 + 1);
}
public String getAvSTR() {
return avSTR.get();
}
public void setAvSTR(String a) {
avSTR.set(a);
}
 
public int getZnavSTR() {
return znavSTR.get();
}
public void setZnavSTR(int v2) {
this.znavSTR.set(v2);
result.set(znavSTR.get() + 5); 
  }
 
public int getResult() {
return result.get();
   }
 
}
}
подозреваю что на java это как-то возможно реализовать, а тогда будет что называется полный отвал башки
потому что если применить метод .setOnKeyReleased то можно делать самые смелые вычисления
или можно как-то обратится к табличной ячейке и прицепить к ней .setOnKeyReleased ???
0
20.04.2017, 22:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2017, 22:12
Помогаю со студенческими работами здесь

Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения.
Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной...


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

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