Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2021, 17:34   #1
Viol12
Новичок
Джуниор
 
Регистрация: 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()); }

}
Viol12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить массив значениями температуры в диапазоне а) среднемесячную температуру третьей декады декабря 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