|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2021, 17:34 | #1 |
Новичок
Джуниор
Регистрация: 22.03.2021
Сообщений: 1
|
Не получается заполнить таблицу значениями, которые выбираются с помощью слайдера. JavaFX
Не получается заполнить таблицу значениям. Таблица должна заполняться значениями со слайдера. Нажимаешь на ячейку в нее должно записываться значение о слайдера. Может кто сталкивался и может помочь. Ничего путного найти не могу.
package sample; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyV alueFactory; import javafx.scene.input.MouseEvent; public class CelController { @FXML private TableView table, leftTable; @FXML private Slider slider; @FXML private RadioButton rb1, rb2, rb_all; @FXML private Label lambdaLabel, ISLabel, OSLabel; private int cell_i, cell_j; private boolean reversed = false; private void initTable(){ TableColumn tc[] = new TableColumn[3]; for(int i = 0; i < 3; i++){ tc[i] = new TableColumn(((Integer)(i+1)).toStri ng()); tc[i].setMinWidth(80); tc[i].setMaxWidth(80); tc[i].setCellValueFactory(new PropertyValueFactory<>("k" + ((Integer)(i+1)).toString())); tc[i].setSortable(false); } table.getColumns().setAll(tc[0], tc[1], tc[2]); table.getSelectionModel().setSelect ionMode(SelectionMode.SIN GLE); table.getSelectionModel().setCellSe lectionEnabled(true); table.setItems(getData()); setLabels(); } private void initLeftTable(){ TableColumn num = new TableColumn("№"); num.setMinWidth(50); num.setMaxWidth(50); num.setCellValueFactory(new PropertyValueFactory<>("num")); num.setSortable(false); TableColumn name = new TableColumn("Альтернатива"); name.setMinWidth(128); name.setMaxWidth(128); name.setCellValueFactory(new PropertyValueFactory<>("name")); name.setSortable(false); TableColumn vp = new TableColumn("ВП"); vp.setMinWidth(50); vp.setMaxWidth(50); vp.setCellValueFactory(new PropertyValueFactory<>("vp")); vp.setSortable(false); leftTable.getColumns().setAll(num, name, vp); leftTable.setItems(getLeftTableData ()); update(); } private ObservableList getLeftTableData(){ ObservableList data = FXCollections.observableArrayList() ; for(int i = 0; i < 3; i++){ data.add(new Cell()); } return data; } private ObservableList getData(){ ObservableList data = FXCollections.observableArrayList() ; for(int i = 0; i < 3; i++){ data.add(new Cell()); } return data; } @FXML private void onEdit(MouseEvent event){ cell_i = table.getFocusModel().getFocusedCel l().getRow(); cell_j = table.getFocusModel().getFocusedCel l().getColumn(); int value = (int) Main.getCriterion(0).getValue(cell_ i, cell_j); if(value < 0) value = (int) Main.getCriterion(0).getValue(cell_ j, cell_i); slider.setValue(value); if(cell_i == cell_j){ rb1.setDisable(true); rb2.setDisable(true); rb_all.setDisable(false); slider.setDisable(true); rb_all.setSelected(true); slider.setValue(1); } else{ rb1.setDisable(false); rb2.setDisable(false); rb_all.setDisable(false); if(!rb_all.isSelected()) slider.setDisable(false); } rb1.setText(Main.getKr2(cell_i)); rb2.setText(Main.getKr2(cell_j)); } @FXML private void rbClicked(MouseEvent event){ if(rb1.isSelected()){ reversed = false; slider.setDisable(false); } else if(rb2.isSelected()){ reversed = true; slider.setDisable(false); } else if(rb_all.isSelected()){ slider.setDisable(true); slider.setValue(1); sliderEvent(event); } } private void update(){ TableColumn tc = table.getFocusModel().getFocusedCel l().getTableColumn(); table.setItems(getData()); table.getSelectionModel().select(ce ll_i, tc); leftTable.setItems(getLeftTableData ()); setLabels(); } private void setLabels(){ lambdaLabel.setText("λ = " + (double)Math.round(Main.getCriterio n(0).getHmax() * 1000) / 1000); ISLabel.setText("ИС = " + (double)Math.round(Main.getCriterio n(0).getIS() * 1000) / 1000); OSLabel.setText("ОС = " + (double)Math.round(Main.getCriterio n(0).getOS() * 1000) / 1000); } @FXML private void sliderEvent(MouseEvent event){ int i = cell_i, j = cell_j; if(reversed){ i ^= j; j ^= i; i ^= j; } long value = Math.round(slider.getValue()); slider.setValue(value); Main.getCriterion(0).change(i, j, value); update(); } @FXML void initialize(){ initTable(); initLeftTable(); } @FXML private void onCelClicked(){ Main.changeScene(Parents.getAim()); } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнить массив значениями температуры в диапазоне а) среднемесячную температуру третьей декады декабря | Craizi8 | C# (си шарп) | 4 | 21.10.2020 13:55 |
Заполнить значениями по умолчанию поле | Notan1310 | WPF, UWP, WinRT, XAML | 1 | 18.12.2015 17:41 |
Помогите доработать программу, заполнить массив случайными значениями . | serg.malkow2014 | Помощь студентам | 2 | 27.11.2013 01:41 |
Как заполнить пустые ячейки нужными значениями | Genek36 | Microsoft Office Excel | 0 | 09.03.2013 15:46 |