Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Использование combobox-столбца при табличном отображении данных. javafx. / 8 сообщений из 8, страница 1 из 1
05.02.2017, 14:30
    #39398849
mikhail.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
Возникла задача:
в базе данные хранятся в двух таблицах
Код: plaintext
1.
 spravochnik 
int id, string name
и
Код: plaintext
1.
 dannye 
int id, string naimenovanie, int id_in_spravochnik
Для понимания: пускай в первой таблице ( spravochnik ) хранятся имена пользователей библиотеки, во второй ( dannye ) - данные о книгах. Если книга на данный момент выдана одному из посетителей библиотеки, то это отображается в базе путём выбора соответствующего ключа в таблице с книгами.
Хотелось бы иметь возможность редактирования этих таблиц средствами интерфейса, созданного с использованием javafx. Напрашивается вариант, при котором столбец, отображающий клиента, у которого книга находится в данный момент, должен быть представлен combobox-ом (по крайней мере в .net это реализовывалось без малейших проблем и интуитивно понятным образом).
Но вот реализовать это средствами javafx мне пока не удаётся. Я везде встречаю примеры, в которых:
- combobox заполняют не парой индекс-значение, а только значением (можно, конечно, использовать этот вариант, но тогда придётся добавлять костыли, которые при обновлении данных в таблице БД будут искать и сохранять в неё индекс, но использовать этот вариант не хотелось бы по ряду причин)
- combobox заполняется как положено - парой ключ-значение, но, во-первых, тип данных для combobox-а - это перечисление - ENUM, а во вторых, данные, которые выводятся в TableView содержат в себе столбец не типа Integer (индекса нужного мне значения), а типа самостоятельно разработанного класса, что тоже совершенно неудобно при сохранении этого всего добра в базу.

Вот пример второго варианта, найденный на просторах сети (столбец с указанием пола - gender - редактируется combobox-ом):
Код: 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.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
import javafx.application.Application;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.control.cell.CheckBoxTreeTableCell;
import javafx.scene.control.cell.ComboBoxTreeTableCell;
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Callback;
 
public class TreeTableViewEditDemo extends Application {
 
    @Override
    public void start(Stage stage) {
 
        TreeTableView<Employee> treeTableView = new TreeTableView<Employee>();
        treeTableView.setEditable(true);
 
        // Create column EmpNo (Data type of String).
        TreeTableColumn<Employee, String> empNoCol //
                = new TreeTableColumn<Employee, String>("Emp No");
 
        // Create column FullName (Data type of String).
        TreeTableColumn<Employee, String> fullNameCol//
                = new TreeTableColumn<Employee, String>("Full Name");
 
        // Create 2 sub column for FullName.
        TreeTableColumn<Employee, String> firstNameCol //
                = new TreeTableColumn<Employee, String>("First Name");
 
        TreeTableColumn<Employee, String> lastNameCol //
                = new TreeTableColumn<Employee, String>("Last Name");
 
        // Add sub columns to the FullName
        fullNameCol.getColumns().addAll(firstNameCol, lastNameCol);
 
        // Gender Column
        TreeTableColumn<Employee, Gender> genderCol //
                = new TreeTableColumn<Employee, Gender>("Gender");
        genderCol.setMinWidth(90);
 
        // Position Column
        TreeTableColumn<Employee, String> positionCol //
                = new TreeTableColumn<Employee, String>("Position");
 
        // Single? Column
        TreeTableColumn<Employee, Boolean> singleCol//
                = new TreeTableColumn<Employee, Boolean>("Single?");
 
        // Add columns to TreeTable.
        treeTableView.getColumns().addAll(empNoCol, fullNameCol, positionCol, genderCol, singleCol);
 
        // Data
        Employee empBoss = new Employee("E00", "Abc@gmail.com", //
                "Boss", "Boss", "Manager", "M", false);
 
        Employee empSmith = new Employee("E01", "Smith@gmail.com", //
                "Susan", "Smith", "Salesman", "F", true);
 
        Employee empMcNeil = new Employee("E02", "McNeil@gmail.com", //
                "Anne", "McNeil", "Cleck", "M", false);
 
        // Root Item
        TreeItem<Employee> itemRoot = new TreeItem<Employee>(empBoss);
        TreeItem<Employee> itemSmith = new TreeItem<Employee>(empSmith);
        TreeItem<Employee> itemMcNeil = new TreeItem<Employee>(empMcNeil);
 
        itemRoot.getChildren().addAll(itemSmith, itemMcNeil);
        treeTableView.setRoot(itemRoot);
 
        // Defines how to fill data for each cell.
        // Get value from property of Employee.
        empNoCol.setCellValueFactory(new TreeItemPropertyValueFactory<Employee, String>("empNo"));
        firstNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<Employee, String>("firstName"));
        lastNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<Employee, String>("lastName"));
        positionCol.setCellValueFactory(new TreeItemPropertyValueFactory<Employee, String>("position"));
 
        // GENDER (COMBO BOX).
        genderCol.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Employee, Gender>, //
        ObservableValue<Gender>>() {
 
            @Override
            public ObservableValue<Gender> call(TreeTableColumn.CellDataFeatures<Employee, Gender> param) {
                TreeItem<Employee> treeItem = param.getValue();
                Employee emp = treeItem.getValue();
                // F,M
                String genderCode = emp.getGender();
                Gender gender = Gender.getByCode(genderCode);
                return new SimpleObjectProperty<Gender>(gender);
            }
        });
        ObservableList<Gender> genderList = FXCollections.observableArrayList(//
                Gender.values());
        genderCol.setCellFactory(ComboBoxTreeTableCell.forTreeTableColumn(genderList));
 
        // After user edit on cell, update to Model.
        genderCol.setOnEditCommit(new EventHandler<TreeTableColumn.CellEditEvent<Employee, Gender>>() {
 
            @Override
            public void handle(TreeTableColumn.CellEditEvent<Employee, Gender> event) {
                TreeItem<Employee> item = event.getRowValue();
                Employee emp = item.getValue();
                Gender newGender = event.getNewValue();
                emp.setGender(newGender.getCode());
                System.out.println("Single column commit. new gender:" +newGender);
                System.out.println("EMP:"+emp.isSingle());
            }
        });
 
        // ==== SINGLE? (CHECH BOX) ===
        singleCol.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Employee, Boolean>, //
        ObservableValue<Boolean>>() {
 
            @Override
            public ObservableValue<Boolean> call(TreeTableColumn.CellDataFeatures<Employee, Boolean> param) {
                TreeItem<Employee> treeItem = param.getValue();
                Employee emp = treeItem.getValue();
                SimpleBooleanProperty booleanProp= new SimpleBooleanProperty(emp.isSingle());
                
                // Note: singleCol.setOnEditCommit(): Not work for
                // CheckBoxTreeTableCell.
                // When "Single?" column change.
                booleanProp.addListener(new ChangeListener<Boolean>() {
 
                    @Override
                    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                        emp.setSingle(newValue);
                    }                     
                });
                return booleanProp;
            }
        });
  
        
         singleCol.setCellFactory(new Callback<TreeTableColumn<Employee,Boolean>,TreeTableCell<Employee,Boolean>>() {
            @Override
            public TreeTableCell<Employee,Boolean> call( TreeTableColumn<Employee,Boolean> p ) {
                CheckBoxTreeTableCell<Employee,Boolean> cell = new CheckBoxTreeTableCell<Employee,Boolean>();
                cell.setAlignment(Pos.CENTER);
                return cell;
            }
        });
 
        //
        StackPane root = new StackPane();
        root.setPadding(new Insets(5));
        root.getChildren().add(treeTableView);
 
        stage.setTitle("TreeTableView (o7planning.org)");
 
        Scene scene = new Scene(root, 450, 300);
        stage.setScene(scene);
        stage.show();
    }
 
    public static void main(String[] args) {
        launch(args);
    }

  public class Employee {
 
    private String empNo;
    private String firstName;
    private String lastName;
    private String email;
    private String position;
    private String gender;
 
    private boolean single;
 
    public Employee(String empNo, String email, //
            String firstName, String lastName, String position, String gender, boolean single) {
        this.empNo = empNo;
        this.email = email;
        this.firstName = firstName;
        this.lastName = lastName;
        this.position = position;
        this.gender = gender;
        this.single = single;
    }
 
    public String getEmpNo() {
        return empNo;
    }
 
    public void setEmpNo(String empNo) {
        this.empNo = empNo;
    }
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getFirstName() {
        return firstName;
    }
 
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
 
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
 
    public String getPosition() {
        return position;
    }
 
    public void setPosition(String position) {
        this.position = position;
    }
 
    public String getGender() {
        return gender;
    }
 
    public void setGender(String gender) {
        this.gender = gender;
    }
 
    public boolean isSingle() {
        return single;
    }
 
    public void setSingle(boolean single) {
        this.single = single;
    }
  }

  public enum Gender {
    FEMALE("F", "Famale"), MALE("M", "Male");
 
    private String code;
    private String text;
 
    private Gender(String code, String text) {
      this.code = code;
      this.text = text;
    }
 
    public String getCode() {
      return code;
    }
 
    public String getText() {
      return text;
    }
 
    public static Gender getByCode(String genderCode) {
      for (Gender g : Gender.values()) {
        if (g.code.equals(genderCode)) {
          return g;
        }
      }
      return null;
    }
 
    @Override
    public String toString() {
      return this.text;
    }
  }
}



Подскажите, пожалуйста, как реализовать необходимый мне функционал и возможно ли это? Не обязательно с использованием TreeTableView - этот пример слегка перегружен, можно и при помощи TableView.
Критерии: из базы данных загружается таблица-справочник и основная таблица, объект, в котором хранится строка из основной таблицы содержит столбец типа Integer, а отображается в TableView соответствующий индексу текст из таблицы-справочника. Заранее спасибо
...
Рейтинг: 0 / 0
05.02.2017, 21:01
    #39398954
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
mikhail.этот пример слегка перегружен
вот и уберите всё лишнее и оставьте в примере 2 поля: ID и ID_из_справочника.
Больше ни одного поля лишнего.
...
Рейтинг: 0 / 0
05.02.2017, 21:28
    #39398965
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
mikhail.,
2.
- где у вас контроллер типа?
public class RecordOverviewController {
@FXML
- и к нему VIEW?
RecordOverview.fxml
- где у вас Модель типа:
public class Record {
...
Рейтинг: 0 / 0
05.02.2017, 21:31
    #39398966
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
Petro123,
3.
если не выходит в JavaFX8 сделать редактируюмую таблицу, то может сделать отдельное окно по двойному клику на строке для редактирования?
Тогда второе окно вообще к вашей табле и проблеме не имеет отношение.
...
Рейтинг: 0 / 0
06.02.2017, 11:23
    #39399125
mikhail.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
Petro123вот и уберите всё лишнее и оставьте в примере 2 поля: ID и ID_из_справочника.
Больше ни одного поля лишнего.

Да, вроде, там ничего такого лишнего, что отвлекает от понимания проблемы, но, вот:
Код: 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.
import javafx.application.Application;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.control.cell.CheckBoxTreeTableCell;
import javafx.scene.control.cell.ComboBoxTreeTableCell;
import javafx.scene.control.cell.TreeItemPropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Callback;
 
public class TreeTableViewEditDemo extends Application {
 
    @Override
    public void start(Stage stage) {
 
        TreeTableView<Employee> treeTableView = new TreeTableView<Employee>();
        treeTableView.setEditable(true);
 
        // Create column EmpNo (Data type of String).
        TreeTableColumn<Employee, String> empNoCol //
                = new TreeTableColumn<Employee, String>("Emp No");
 
        // Gender Column
        TreeTableColumn<Employee, Gender> genderCol //
                = new TreeTableColumn<Employee, Gender>("Gender");
        genderCol.setMinWidth(90);
 
        // Add columns to TreeTable.
        treeTableView.getColumns().addAll(empNoCol, genderCol);
 
        // Data
        Employee empBoss = new Employee("E00", "M");
 
        Employee empSmith = new Employee("E01", "F");
 
        Employee empMcNeil = new Employee("E02", "M");
 
        // Root Item
        TreeItem<Employee> itemRoot = new TreeItem<Employee>(empBoss);
        TreeItem<Employee> itemSmith = new TreeItem<Employee>(empSmith);
        TreeItem<Employee> itemMcNeil = new TreeItem<Employee>(empMcNeil);
 
        itemRoot.getChildren().addAll(itemSmith, itemMcNeil);
        treeTableView.setRoot(itemRoot);
 
        // Defines how to fill data for each cell.
        // Get value from property of Employee.
        empNoCol.setCellValueFactory(new TreeItemPropertyValueFactory<Employee, String>("empNo"));
 
        // GENDER (COMBO BOX).
        genderCol.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<Employee, Gender>, //
        ObservableValue<Gender>>() {
 
            @Override
            public ObservableValue<Gender> call(TreeTableColumn.CellDataFeatures<Employee, Gender> param) {
                TreeItem<Employee> treeItem = param.getValue();
                Employee emp = treeItem.getValue();
                // F,M
                String genderCode = emp.getGender();
                Gender gender = Gender.getByCode(genderCode);
                return new SimpleObjectProperty<Gender>(gender);
            }
        });
        ObservableList<Gender> genderList = FXCollections.observableArrayList(//
                Gender.values());
        genderCol.setCellFactory(ComboBoxTreeTableCell.forTreeTableColumn(genderList));
 
        // After user edit on cell, update to Model.
        genderCol.setOnEditCommit(new EventHandler<TreeTableColumn.CellEditEvent<Employee, Gender>>() {
 
            @Override
            public void handle(TreeTableColumn.CellEditEvent<Employee, Gender> event) {
                TreeItem<Employee> item = event.getRowValue();
                Employee emp = item.getValue();
                Gender newGender = event.getNewValue();
                emp.setGender(newGender.getCode());
                System.out.println("Single column commit. new gender:" +newGender);
            }
        });
 
        StackPane root = new StackPane();
        root.setPadding(new Insets(5));
        root.getChildren().add(treeTableView);
 
        stage.setTitle("TreeTableView (o7planning)");
 
        Scene scene = new Scene(root, 450, 300);
        stage.setScene(scene);
        stage.show();
    }
 
    public static void main(String[] args) {
        launch(args);
    }

  public class Employee {
 
    private String empNo;
    private String gender;
 
    public Employee(String empNo, String gender) {
        this.empNo = empNo;
        this.gender = gender;
    }
 
    public String getEmpNo() {
        return empNo;
    }
 
    public void setEmpNo(String empNo) {
        this.empNo = empNo;
    }
 
    public String getGender() {
        return gender;
    }
 
    public void setGender(String gender) {
        this.gender = gender;
    }
 
  }

  public enum Gender {
    FEMALE("F", "Famale"), MALE("M", "Male");
 
    private String code;
    private String text;
 
    private Gender(String code, String text) {
      this.code = code;
      this.text = text;
    }
 
    public String getCode() {
      return code;
    }
 
    public String getText() {
      return text;
    }
 
    public static Gender getByCode(String genderCode) {
      for (Gender g : Gender.values()) {
        if (g.code.equals(genderCode)) {
          return g;
        }
      }
      return null;
    }
 
    @Override
    public String toString() {
      return this.text;
    }
  }
}



Petro123mikhail.,
2.
- где у вас контроллер типа?
public class RecordOverviewController {
@FXML
- и к нему VIEW?
RecordOverview.fxml
- где у вас Модель типа:
public class Record {

Я целенаправленно привёл простейший пример, который иллюстрирует проблему. Без лишних элементов, без перегруженности всевозможными контроллерами. Вставил в файл, скомпилировал (хоть в командной строке), визуально увидел что именно необходимо. Как раз для того, чтоб акцентировать внимание на том, с чем столкнулся. Если Вы знаете, как достичь необходимого функционала с применением "лишних" технологий - подскажите, пожалуйста, как это сделать.

Petro123Petro123,
3.
если не выходит в JavaFX8 сделать редактируюмую таблицу, то может сделать отдельное окно по двойному клику на строке для редактирования?
Тогда второе окно вообще к вашей табле и проблеме не имеет отношение.

Вопрос задан как раз из-за некоей "недоразвитости" javafx. Неоднократно на всевозможных англоязычных форумах встречал сообщения типа: "Ребята, подскажите, как с отображением таблиц в javafx работать `like a Excel`, а то во всех примерах, которые приводит Oracle даже новую строку добавить нельзя просто вписав текст в первую пустую строку - везде кнопка `Добавить` и отдельная форма для ввода данных - привет 90-е".

Хочется хотя бы относительного удобства работы для пользователя добиться.
...
Рейтинг: 0 / 0
06.02.2017, 12:23
    #39399171
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
mikhail.Вопрос задан как раз из-за некоей "недоразвитости" javafx. Неоднократно на всевозможных англоязычных форумах встречал сообщения типа: "Ребята, подскажите, как с отображением таблиц в javafx работать `like a Excel`, а то во всех примерах, которые приводит Oracle даже новую строку добавить нельзя просто вписав текст в первую пустую строку - везде кнопка `Добавить` и отдельная форма для ввода данных - привет 90-е".

Хочется хотя бы относительного удобства работы для пользователя добиться.
да. Действительно. Для таблиц по типу Excel из коробки JavaFX слишком молодой.
https://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm#CJADIDIE
...
Вот тут вроде код для полного контроля за ячейками, но кода многовато IMHO
https://dzone.com/articles/javafx-table-cells
...
Рейтинг: 0 / 0
06.02.2017, 12:24
    #39399174
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.09.2020, 00:36
    #39997867
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование combobox-столбца при табличном отображении данных. javafx.
mikhail.,

Спустя года хочу спросить , вы решили этот вопрос малой кровью?)

Действительно, даже в последних сборках JavaFX в комбобоксе (табличном в частности, в виде ComboBoxTableCell ) до сих пор не реализовали механизм хранения и отображения пары key-value. По аналогии например с valueMember и displayMember из C# комбобокса.
В официальных источниках ясно и четко прописан не меняющийся с годами отсосяндр :
A class containing a TableCell implementation that draws a ComboBox node inside the cell.
By default, the ComboBoxTableCell is rendered as a Label when not being edited, and as a ComboBox when in editing mode. The ComboBox will, by default, stretch to fill the entire table cell.
To create a ComboBoxTableCell, it is necessary to provide zero or more items that will be shown to the user when the ComboBox menu is showing. These items must be of the same type as the TableColumn.


Я тут подумал, может тупо в раскрывающемся списке выводить поля с лейблами, поля сами скрывать, а показывать только лейблы?
А их в свою очередь размещать на выплывающем Pane.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Использование combobox-столбца при табличном отображении данных. javafx. / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]